Как это работает: Отдел DevOps. Навыки и технологии

Продолжаем нашу рубрику “Как это работает” рассказом DevOps-инженера Виктора Ефимова.

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

Итак, для начала разберём: что такое DevOps?

DevOps (Development Operation) – это набор методов для повышения эффективности процессов разработки (Development) и эксплуатации (Operation) программного обеспечения. Эффективность повышается за счет их непрерывной интеграции и активного взаимодействия между специалистами команды разработки, а также с помощью инструментов автоматизации.

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

Навыки и технологии, которыми должен владеть DevOps специалист

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

Текущий спектр технологий и инструментов, с которыми будет работать DevOps-инженер, зависит от конкретной компании и проектов, поэтому можем выделить следующие пункты, которые обязательны для DevOps-профессионала:

1) Основы компьютерных сетей

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

2) Операционные системы

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

Знать все возможности каждой версии, каждой системы невозможно, но хороший DevOps-специалист понимает общие принципы работы любой ОС.

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

Необязательно знать языки программирования на очень высоком уровне, но в работе DevOps важно уметь ориентироваться в чужом коде и понимать хотя бы на минимальном уровне, как он работает. К тому же часто требуется написать скрипты для автоматизации или тестирования определенного процесса. Сегодня самыми популярными скриптовыми языками программирования являются Python, Go, Bash, Powershell.

4) Системы контроля версий

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

Сейчас систем контроля версий много и они отличаются набором характеристик, но на данный момент Git является самой популярной, этаким «золотым стандартом», который используется практически везде, поэтому имеет смысл изучать именно его.

5) Системы управления конфигурацией (например, Ansible)

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

Самыми популярными на сегодняшний день инструментами являются Ansible, Chef, Puppet, Saltstack и т.д.

6) CI/CD инструменты

Непрерывная интеграция (Continuous Integration, CI) и непрерывная поставка (Continuous Delivery, CD) представляют собой культуру, набор принципов и практик, которые помогают разработчикам чаще и надежнее развертывать изменения программного обеспечения. CI/CD позволяет упростить процесс разработки, снизить трудоемкость работы и сделать её более предсказуемой за счёт раннего обнаружения и устранения ошибок и конфликтов.

Самыми популярными инструментами для реализации CI/CD концепции являются GitLab, Jenkins, TeamCity, Bamboo и т.д.

7) Системы оркестрации и микросервисы

Для доставки и развертывания современных приложений используют контейнеры и микросервисы. Данный подход позволяет разбить монолитное приложение на множество маленьких частей, что позволяет разрабатывать и обновлять их независимо друг от друга. Для управления контейнерами используют системы оркестрации, знание которых в настоящее время необходимо хорошему DevOps — инженеру. Одной из популярных систем является Kubernetes, но ещё есть Openshift, Docker Swarm и т.п.

8) Infrastructure as Code

Модель «Инфраструктура как код» (IaC) является неотъемлемой частью работы DevOps-инженеров. С помощью IaC описывается гибкая, масштабируемая архитектура, которая, при желании, может быть легко изменена, дополнена либо уничтожена через код. Также можно быстро автоматизировать развертывание нового проекта и избавиться от зависимости, железа или провайдеров. На данный момент самым популярным средством IaC является Terraform.

9) Cloud platform (AWS, GCP, AZURE)

Сейчас бизнес уходит от развертывания своей инфраструктуры в собственных дата-центрах в пользу создания окружения у облачных провайдеров. Облачные платформы позволяют уменьшить затраты на инфраструктуру, легко масштабировать ресурсы, использовать для разработки собственные PaaS/Saas-решения и т.п. Поэтому DevOps-инженеру необходимо знать решение как минимум одного облачного провайдера. На сегодняшний день самыми известными являются Amazon Web Services, Azure, GCP, в России — Yandex Cloud.

10) Английский язык

Данный пункт всё-таки можно отнести к soft skills, но знание английского довольно важно, поскольку почти вся документация и обучающие материалы по стэку DevOps предоставлена исключительно на английском языке. И, если речь идет об иностранном рынке (иностранных клиентах или работодателе), то знание английского обязательно. Кроме этого, будет нелишним иметь навыки делового общения и переписки на английском.

Если вы хотите попробовать свои силы в таком суперперспективном направлении как DevOps, то мы будем рады увидеть вас в нашей команде! Просто отправьте резюме на hr@dbi.ru.