«Когда есть DevOps, задача программистов — просто написать код»

«Когда есть DevOps, задача программистов — просто написать код»

Девопсы из SoftServe и ExtendaRetail рассказывают о профессии.

Согласно исследованию портала Dou.ua, зарплаты DevOps-инженеров растут быстрее доходов других технических специалистов. Это можно объяснить тем, что девопсы — среди самых востребованных IT-специалистов в Украине (по данным компании GlobalLogic за ноябрь 2020 года).

Мы спросили девопсов Анастасию Ковтун и Марию Тартачну, какие задачи они решают и что нужно знать, чтобы стать DevOps-инженером.

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

Изначально DevOps был методологией разработки. Потом направление трансформировалось в отдельную профессию — понадобились люди, которые будут координировать разработку продуктов.

Чтобы продукт дошел до пользователя, код нужно доставить на сервер. Если компания большая, это занимает много времени. Девопс нужен, чтобы автоматизировать эти процессы. Когда есть DevOps, задача программистов — просто написать код.

Обязанности DevOps-инженера варьируются в зависимости от проекта, но обычно это создание и настройка инфраструктуры. Например:

  • автоматизация и улучшение процессов разработки и релизов;
  • работа с девелоперами, чтобы удостовериться, что код отвечает необходимым характеристикам;
  • обеспечение безопасности и защиты систем (инфраструктуры).

Основная задача девопса — обеспечить девелоперов всем необходимым для работы над софтом. Она включает создание внутренних инструментов для компании — например, домашних CLI (интерфейсов командной строки) — или использование IaC (инфраструктуры как кода) для устойчивости системы.

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

CloudOps применяют все практики и процессы к облачной архитектуре. DevSecOps сосредоточены на оценке рисков и интеграции технологий для безопасности данных. Их задача — мониторинг и улучшение гибкости системы.

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

Мария Тартачна, Team Lead DevOps Engineer в SoftServe

О работе

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

Я занимаюсь release engineering, он относится к CI/CD-процессам. CI/CD — continuous integration и continuous deployment. Это процессы, которые обеспечивают автоматизированную доставку продукта к среде.

Моя команда занимается настройкой процесса и всех инструментов для клиентов — девелопмент-команд, которые работают на Cisco. Они пишут код и пушат его в систему контроля версий — например, Github. После этого наш инструмент забирает код и помещает его в артефакт. Затем происходит автоматический деплоймент артефакта в среду. Именно для этих команд разработчиков мы предоставляем release engineering как сервис.

Кейс

Мы работаем над настройкой application dynamics для нескольких продуктов, которые находятся в кластере Kubernetes. Application dynamics — это инструмент для мониторинга, он нужен для трассирования программы. Трассировка позволяет регистрировать информацию во время ее выполнения. Затем журнал трассировки можно использовать для нахождения ошибок.

Сейчас мы собираем реквайерменты, чтобы корректно настроить application dynamics и учесть пожелания разработчиков.

Рекомендации для тех, кто хочет стать DevOps’ами

Необходимые hard- и soft-скилы

Мы в компании используем roadmap, на которой желтым цветом выделены основные инструменты девопса. Для старта желательно освоить 1–2 навыка в каждой сфере.

Также нужны базовые знания программирования. Подходит любой язык, но я чаще всего использую bash, а коллеги — Python.

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

Еще важно умение общаться с людьми. DevOps — это постоянная коммуникация. С девелоперами, с менеджментом, с клиентом. Если разработчик может сидеть в углу и писать код, то для девопса это невозможно.

Полезные ресурсы

Основы можно получить на Coursera или Udemy. Начать с программирования, а затем переходить к специфическим инструментам — например, инфраструктуре как коду или контейнерам.

Книги

  • Книга от Google об SRE (site reliability engineering). Это не совсем о DevOps, но здесь можно получить знания об операционных системах, есть отдельный раздел о release engineering. Все девопсы работают с мониторинг-системами и service level agreement, поэтому книга будет полезной.
  • Unix and Linux System Administration Handbook by Evi Nemeth & Trent R. Hein — книга по системному администрированию. Ее можно использовать как справочник.

Анастасия Ковтун, Tech Lead / Senior DevOps Engineer в Extenda Retail

О работе

Я работаю на скандинавскую продуктовую ритейл-компанию. Мы почти на 100% в облаке: наша инфраструктура — в Google Cloud Platform и (немного) в Amazon web services.

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

Кейсы

  • 1. Разработка CLI-инструмента, написанного на Node.js

    Инструмент делает скаффолдинг для облачной инфраструктуры GCP (Google Cloud Provider). Скаффолдинг значит, что мы подготовили автоматические конфигурации для инфраструктуры приложений. Для этого мы использовали Yeoman (инструмент на Node.js), который является opensource-проектом для скаффолдинга. Это позволяет создавать начальные шаблоны, управлять зависимостями, запускать модульные тесты. Девелоперам достаточно запустить CLI, ответить на несколько вопросов — и все конфигурационные файлы будут готовы. Им не нужно разбираться с Terraform.
  • 2. Разработка Developer Portal, где хранится вся документация о сервисах компании

    Раньше документация хранилась либо в Confluence, либо в Github-репозиториях (там же, где и код для софта). Благодаря автоматизации теперь вся документация собирается с репозиториев и публикуется на портале. Это уменьшает время на поиск информации.

Рекомендации для тех, кто хочет стать DevOps’ами

Необходимые hard- и soft-скилы

Все зависит от технологий в проекте. Но я бы выделила знания:

  • любой облачной платформы (AWS, GCP etc);
  • инструментов для создания инфраструктуры как кода (Terraform/Terragrunt);
  • контейнеров (Docker, Kubernetes);
  • конвейеров для интеграции ПО (Jenkins, TeamCity, CircleCI etc);
  • системы контроля версий (git etc);
  • инструментов для конфигурационного управления (Ansible, Puppet etc);
  • Linux и языков программирования (bash/Python).

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

Полезные ресурсы

Telegram-каналы

  • Библиотека devops'а — здесь можно найти анонсы вебинаров и митапов. Также на канале публикуют интересные статьи.
  • DevOps&SRE Library — информация о полезных CLIs- или opensource-проектах.
  • CatOps — канал девопсов Юрия Рочняка и Максима Власова. Они публикуют апдейты новых версий инструментов, зарубежные статьи и авторские обзоры.

Другие ресурсы

  • A Cloud Guru (ex-Linux Academy) — онлайн-платформа об облачных технологиях и Linux. Подписка на платформу позволяет протестировать cloud-ресурсы.
Ещё статьи
Как упростить разработку.
Data science, web development, gamedev и не только.