Прокачайся в код-ревью: для первых 50 участников — курс бесплатный

время чтения: 4 мин

Роадмап для инженеров DevOps: с чего начать и что нужно знать

Автор статьи — IT-эксперт Питер Мерфи.

При изучении чего-то нового всегда важно составить план, следуя которому вы непременно придете к желаемому результату: и DevOps — не исключение. Эта методология охватывает довольно обширную область знаний и практик, поэтому роадмап будет как нельзя кстати.

Как именно стать инженером DevOps? Какие инструменты и навыки стоит осваивать в первую очередь? Давайте разбираться.

GIT

Многие считают, что знание языка программирования — первый шаг на пути обучения DevOps. Однако на начальном этапе, возможно, более полезным будет понимание GIT.

GIT — это система управления версиями с открытым исходным кодом, которая отслеживает изменения. Несколько разработчиков могут использовать GIT для параллельной работы, когда каждый вносит свои изменения, а все остальные видят их.

Кроме того, GIT работает как репозиторий, в котором вы можете получить доступ к коду для управления инфраструктурой (англ. Infrastructure as Code, IaC). Это значительно повышает производительность: вы даже можете просматривать проекты других разработчиков и получать доступ к ПО с открытым исходным кодом.

Что именно полезно знать в GIT? Рабочие процессы (workflows), управление ветками (branching) и конфликты слияния (merging conflicts) — пожалуй, основные моменты, на которые стоит обратить внимание.

Языки программирования

Любому инженеру, в том числе и DevOps, нужно знать хотя бы один язык программирования. Это может быть Python, Golang, Java или Ruby. DevOps-специалисты не всегда пишут исходный код, но часто создают скрипты автоматизации. Кроме того, вам придется выполнять множество задач, а это гораздо легче делать со знанием программирования.

Концепции различных операционных систем

Поскольку вам придется работать непосредственно с программными системами, уверенное владение основными концепциями ОС — необходимость. Инженеры DevOps берут на себя задачи по автоматизации, тестированию и управлению конфигурацией, поэтому нужно хорошо понимать архитектуру системы.

Полезно будет изучить и другие концепции, такие как виртуализация (virtualization), потоки выполнения (threads) и конкурентность (concurrency), управление процессами (process management) и смежные темы. Самая популярная ОС, с которой работают DevOps-специалисты, — Linux, поэтому с этой системой стоит познакомиться поближе. UNIX и Windows — другие возможные варианты.

Скрипты

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

Приятная новость: скриптовые языки достаточно просты в изучении. Кроме того, языки программирования, такие как Python, Ruby и JavaScript, — это одновременно и скриптовые языки. Поэтому хорошее знание одного из них значительно ускорит процесс обучения.

Роадмап DevOps

Контейнеры

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

Для начала ознакомьтесь с Docker, популярной технологией контейнеров с открытым исходным кодом. Изучите архитектуру Docker, команды (например docker pull, docker create, docker build, docker push) и основы работы с контейнерами.

Оркестрация контейнеров

Оркестрация контейнеров — это автоматическое управление контейнеризированными приложениями. Здесь пригодится умение работать с Kubernetes — платформой с открытым исходным кодом, которая способна управлять контейнеризированными рабочими нагрузками. Модульная структура Kubernetes подходит для оркестрации всего процесса: разработчики могут просматривать, получать доступ и развертывать контейнерные среды.

Сети и безопасность

DevOps-инженер устанавливает сетевые протоколы, которые определяют, как приложения взаимодействуют и передают данные между устройствами. Это включает типы запросов и функции безопасности, такие как настройка брандмауэров и DNS. Также важно знать модель OSI, протоколы HTTP, HTTPS, FTP, SSL, TLS и т. д.

Передача данных по сети сопровождается риском, поэтому задача инженера DevOps — снижение этого риска. Базовое понимание кибербезопасности и ее интеграции с практиками управления данными DevOps — это критически важные знания для любого специалиста.

Управление серверами

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

Задачи по управлению сервером можно автоматизировать. Для этого нужно знать основы мониторинга оборудования (ЦП, ОЗУ), обновлений ПО, практик безопасности и резервного копирования (защита от потери данных). Не будет лишним и знание веб-серверов, например Apache Tomcat, NGINX, а также полезных инструментов DevOps, которые поддерживают повышение производительности, например Ansible, Spinnaker и AWS Systems Manager.

CI/CD (Continuous Integration/Continuous Delivery)

Непрерывная интеграция и доставка — это практики DevOps, которые применяются для повышения эффективности процесса разработки. Их суть заключается в том, что вместо последовательной разработки все создание, тестирование и обновление кода выполняются с непрерывно и автоматически. Это делает процесс разработки более целостным и быстрым.

Поэтому вам как DevOps-инженеру потребуется знание всего процесса CI/CD. Он включает в себя несколько этапов, в том числе написание кода, сборку, тестирование, релиз и развертывание продукта. Задачи также могут включать настройку сервера CI/CD, автоматические итеративные обновления и т. д. Полезным будет и знание популярных инструментов CI/CD, например Bamboo, Gitlab, Jenkins, Azure DevOps.

Путь DevOps

Облачные вычисления

Хранение данных на физических серверах все активнее заменяется облачными технологиями. Поэтому DevOps-инженер должен уметь работать с популярными облачными платформами.

Amazon Web Service (AWS) — лидер в области облачных технологий, но есть и другие крупные платформы со своими преимуществами, например Microsoft Azure, Google Cloud, Heroku и Alibaba. В идеале выбрать одну из них и сосредоточиться на более предметном изучении. Чтобы подтвердить квалификацию, существует множество программ и сертификаций.

Мониторинг

Вам нужно будет изучить мониторинг всех аспектов жизненного цикла разработки (интеграция, тестирование, развертывание и т. д.). Инструменты мониторинга позволяют в реальном времени видеть все приложения и инфраструктуру и следить за производительностью, чтобы выявить ошибки до того, как они станут более серьезными проблемами. Популярные инструменты — Nagios, Icing, Datadog, Jaeger, Zabbix, Monit, AppDynamic и New Relic. Выбирайте те, которые наиболее эффективно решают конкретные задачи.

Понимание практик разработки ПО

Существует несколько различных методологий разработки, которые используются в той или иной компании. Это может быть Agile, Waterfall, Six Sigma или Lean. Инженер DevOps должен быть знаком с этими практиками, поскольку отвечает не только за техническую часть — синхронизацию всех этапов создания продукта, но и за взаимодействие между командами. И здесь важны навыки коммуникации и лидерства.

Дополнительные источники обучения

Для любого специалиста, который хочет быть успешным в профессии, важно постоянное развитие теоретических и практических навыков. Поэтому инвестируйте в свое образование, используйте возможности онлайн-обучения и нетворкинга с опытными коллегами и не бойтесь экспериментов.

Для начинающих DevOps-специалистов могут быть полезны следующие книги:

Заключение

Может показаться, что все перечисленные знания и навыки настолько обширны, что ими невозможно овладеть. Да, DevOps — не самый простой путь развития карьеры, но зато всегда интересный и увлекательный: есть множество технологий и инструментов, которые можно открывать и углубляться в них, чтобы использовать эти знания для профессионального роста.

Мнения, выраженные в статьях на сайте, принадлежат исключительно авторам и могут не совпадать с мнением редакции или участников Anywhere Club.