Цикл Junior DevOps

от автора

Часть 1. Кто такой DevOps, чем он занимается

Постоянно на платформах по поиску работы появляется вакансии Junior DevOps, обычно требования к кандидату выглядит как большой список с десятками технологий и стеков: Linux, Docker, Kubernetes, Terraform, Jenkins, AWS, Prometheus, Grafana.

Для человека, который только начинает изучать профессию, такое описание может пугать.

Возникает ощущение, что DevOps — это специалист во всем, который одновременно должен быть системным администратором, программистом, сетевым инженером, специалистом по информационной безопасности и архитектором облачной инфраструктуры.

Отчасти это правда. Но только отчасти.

На практике никто не ожидает, что DevOps и тем более Junior DevOps, будет знать все существующие технологии. Работодателям гораздо важнее, чтобы кандидат понимал принципы работы операционных систем, сетей, контейнеризации и умел автоматизировать задачи.

В этой серии статей я постараюсь обьяснить в что такое DevOps, как им стать, зачем им становиться, чем он занимается, какие технологии использует и так далее.


Что такое DevOps?

Многие считают, что DevOps — это профессия. На самом деле изначально DevOps — (акроним от англ. development & operations) — методология автоматизации технологических процессов сборки, настройки и развёртывания программного обеспечения.

Название образовано от двух слов:

  • Development (разработка) — создание программного обеспечения;

  • Operations (эксплуатация) — поддержка серверов, инфраструктуры и приложений после их запуска.

Изначально эти команды работали отдельно друг от друга. Разработчики писали код и передавали его. Серверные инженеры запускали этот код на сервере.

Очень часто возникали проблемы.

Например:

— У разработчиков на компьютере все работает

— А на сервере не работает

Подобная ситуация встречалась очень часто. Причина проста.

Компьютер разработчика и сервер редко были одинаковыми.

Отличались версии библиотек, операционной системы, настройки сети, конфигурация веб-сервера и даже переменные окружения.

Именно для решения подобных проблем появился DevOps.

Его основная идея звучит просто:

Максимально автоматизировать путь приложения от компьютера разработчика до рабочего сервера.


Чем занимается DevOps-инженер?

Чтобы лучше понять роль DevOps, представим, что команда разрабатывает интернет-магазин.

Разработчик разработал новую страницу или кнопку, или поменял дизайн.

Для того чтобы, пользователь смог это воспользоваться этим, необходимо загрузить и проверить работоспобосноть на сервере.

Если выполнять все действия вручную, процесс займет, значительное время, во время которого сайт, приложение будет простаивать.

Теперь представьте, что таких обновлений не одно, и они регулярно вынуждены отключать сайт или приложение.

Также следует учитывать что при ручной работе, со временем вырастает количество ошибок, вызванных усталостью, невнимательностью, то есть человеческим фактором.

DevOps-инженер занимается решением этой проблемы.

Благодаря нему процесс автоматизируется:

  • код проходит автоматические тесты;

  • собирается новая версия приложения;

  • создаётся Docker-образ;

  • приложение разворачивается на сервере;

  • система мониторинга проверяет его работоспособность.

Этот процесс называется CI/CD.

CI (Continuous Integration) — непрерывная интеграция. Каждый новый фрагмент кода автоматически проверяется и объединяется с основной веткой проекта.

CD (Continuous Delivery/Continuous Deployment) — непрерывная доставка или развёртывание. После успешной проверки приложение автоматически публикуется на тестовом или рабочем сервере.

Благодаря этому разработчики могут выпускать обновления десятки раз в день.


Почему компании инвестируют в DevOps?

Допустим, интернет-магазин теряет возможность принимать заказы на один час.

Для бизнеса это может означать значительные финансовые потери.

Поэтому задача DevOps — не только ускорить выпуск новых версий, но и сделать инфраструктуру надёжнее.

К примеру:

  • если один сервер перестанет отвечать, нагрузку примет другой;

  • если приложение начинает потреблять слишком много памяти или произойдет необычная активность, система мониторинга отправит уведомление;

  • если новая версия работает некорректно, можно автоматически вернуть предыдущую.

Именно поэтому современные компании всё чаще используют автоматизацию вместо ручного администрирования.


Что входит в обязанности Junior DevOps?

Несмотря на большое количество технологий, повседневная работа Junior DevOps обычно состоит из вполне конкретных задач.

Например:

  • написание простых Bash- и Python-скриптов для автоматизации;

  • создание Docker-контейнеров;

  • настройка CI/CD-конвейеров;

  • анализ логов приложений;

  • помощь в настройке облачной инфраструктуры;

  • обновление сервисов и поиск причин сбоев.

Здесь встречается ещё один важный термин — лог.

Лог — это журнал событий, который ведёт программа или операционная система. В логах записываются ошибки, предупреждения и информация о работе приложения. Когда сервис перестаёт запускаться, первое, что делает инженер, — открывает логи и ищет причину проблемы.

Именно поэтому умение читать логи считается одним из базовых навыков DevOps.


Нужно ли знать программирование?

Это один из самых частых вопросов новичков.

Ответ — да, но не в том объёме, как у разработчика.

DevOps регулярно пишет код, но это, как правило, небольшие программы для автоматизации.

Например:

  • создать резервную копию базы данных;

  • автоматически обновить несколько серверов;

  • собрать информацию с API;

  • обработать конфигурационные файлы.

Чаще всего для этого используют Python и Bash.

Глубокое знание алгоритмов или сложных архитектурных паттернов для первой работы обычно не требуется.


С чего начать?

Практически каждая технология DevOps строится на предыдущей.

Невозможно уверенно работать с Docker, не понимая Linux.

Трудно разобраться с Kubernetes, если вы не знаете, как устроены контейнеры.

А автоматизация инфраструктуры теряет смысл без понимания сетей и Git.

Для этого я собрал примерный roadmap, для DevOps

Linux → Bash → Git → Python → Компьютерные сети → Docker → Docker Compose → CI/CD → Kubernetes → Terraform → Ansible → AWS/Azure/GCP → Мониторинг → Логирование → DevSecOps → Портфолио → Первая работа Junior DevOps.

Именно поэтому в следующей части мы подробно разберём roadmap Junior DevOps, объясним, почему технологии изучаются именно в таком порядке, и составим пошаговый план обучения с бесплатными ресурсами и практическими заданиями.

ссылка на оригинал статьи https://habr.com/ru/articles/1053054/