Обложка статьи «Чем занимается DevOps-инженер»

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

Владимир Букин

Владимир Букин, руководитель разработки облачных продуктов в ABBYY

Направление DevOps (development + operations) сегодня очень популярно, и спрос на DevOps-инженеров растёт по мере того, как усложняется процесс разработки ПО в IT-компаниях во всём мире. По данным HeadHunter, в 2019 году востребованность DevOps-инженеров в России выросла на 70% по сравнению с 2016 годом, и наша компания — не исключение.

Я занимаюсь развитием cloud-native решения ABBYY в московском офисе и отвечаю, в том числе, за работу DevOps-инженеров. На примере нашей команды я попробую рассказать, как устроен типичный день такого специалиста, и какими задачами он занимается.

В Москве наши DevOps-инженеры прикреплены к четырём командам разработки, которые занимаются нашим cloud-native решением. Эти специалисты работают в том же ритме, что и разработчики — ежедневные встречи, ретроспективы, демонстрации, груминг. DevOps-инженеры тесно взаимодействуют с командой разработки и должны быть погружены во все изменения, поэтому в основном выполняют задачи в офисе. Группа DevOps-инженеров есть также в нашем европейском офисе — она отвечает за эксплуатацию продакшна.

Типичный рабочий день DevOps-инженера

В ABBYY можно работать по удобному графику, поэтому утром все приходят в офис в разное время. Первым делом DevOps-инженер проверяет, нет ли падений тестов, всё ли в порядке с инфраструктурой. Тут стоит добавить, что если с инфраструктурой происходит что-то чрезвычайное, пока инженера нет в офисе, он оперативно подключается в удалённом режиме и решает проблему. После этого у нас проходит ежедневная командная встреча (стендап). На ней собираются тимлиды, проектные менеджеры, разработчики и сами DevOps-инженеры. Все рассказывают, что они сделали, что будут делать, какие у них есть проблемы.

После встречи DevOps-инженер работает над своими задачами с учётом возможных изменений, оговорённых во время стендапа. Чаще всего он общается с разработчиками и с IT-службой, если нужно запросить больше ресурсов on-premise или получить дополнительные доступы для команды.

Многие задачи занимают много времени. Иногда можно провести целый рабочий день оптимизируя что-либо или пробуя те или иные подходы. Как выглядит одна из типичных рабочих задач? Например, сейчас очень актуально создание CI/CD pipeline в Kubernetes для того, чтобы разработчик мог убедиться, что продукт в системе собирается, работает, интегрируется и готов к продвижению по тестовым средам.

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

Какими задачами занимается DevOps-инженер

Есть несколько типов задач, которые решают DevOps-инженеры в ABBYY.

Задачи, связанные со средой непрерывной интеграции (CI-средой)

Настроить качественный CI pipeline, проработать схемы доставки до продакшна вместе с другой командой. Сюда также относится выдача наших артефактов — инструментов, которые производит разработка для использования в других командах, когда им нужно развернуть нашу платформу у себя в кластере и проверить случаи совместимости. DevOps-инженер готовит Helm-чарты для всех новых сервисов, которые будут создаваться. Helm — это пакетный менеджер для кластера Kubernetes, он позволяет удобно раскатать этот сервис в кластер.

Вопросы запуска нашего решения в on-premise-окружении

В последнее время мы фокусировались на облаке, но уже есть задача подготовить продукт к on-premise, а с этим всё сложнее. Задачи могут быть как исследовательские (выбрать подход к тому, как мы будем разворачиваться, например), так и непосредственно связанные с имплементацией. Например, мы должны найти инструмент, который поможет удобно развернуть все машины без самостоятельного написания скриптов. При этом DevOps-инженер сам никуда не выезжает, мы пытаемся эмулировать среду on-premise на основании фидбэка от менеджера продукта.

Исследование новых технологий

Например, это может быть связано с экосистемой Kubernetes. Ещё один пример — подключить автоматическое масштабирование с использованием Keda.

Мониторинг рабочих окружений: dev, staging и pre-production

Также входит в сферу ответственности DevOps-инженера. Если у кого-то что-то упало, инженеру приходит уведомление, и он оперативно подключается и разбирается с проблемой.

Мониторинг расходов на облачную инфраструктуру

DevOps-инженер регулярно смотрит отчёты, по которым команда DevOps-инженеров формирует рекомендации по сокращению расходов.

В чём ещё участвует DevOps-инженер

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

Между грумингом и демо идёт работа над задачами. У нас принят подход Infrastructure as Code. Это означает, что все изменения в нашей инфраструктуре мы описываем декларативным способом. Конфигурацию инфраструктуры мы держим в Git-репозитории, а все правки проходят через обязательный code review. Применение Infrastructure as Code помогает автоматизировать наши ежедневные операции, тратить меньше времени на рутину и заниматься более интересными задачами.

***

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