Как нанять DevOps-инженера в команду

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

Кто такой DevOps-инженер

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

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

Основные задачи DevOps-инженера

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

  • Строит открытые каналы коммуникации

Практики DevOps тесно связаны с Agile и Kanban, потому что много внимания уделяет постановке целей, коммуникации и контролю прогресса.  его задача - техническими средствами помочь достичь максимума в коммуникации и контроле.

  • Автоматизирует

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

  • Управляет ИТ-инфраструктурой

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

  • Управляет ходом разработки

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

Таким образом, DevOps сочетает в себе администрирование, программирование, QA и менеджмент.

Что должен знать и уметь DevOps

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

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

Это самый очевидный пункт, так как DevOps должен понимать, что пишет разработчик, в чем может заключаться проблема и так далее. В идеале он в идеале должен уметь писать скрипты. Языки могут быть любые из актуальных на сегодняшний день: Ruby, Go, Python, Powershell, Java, PHP и многие другие.

  • Операционные системы и среды

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

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

Самые популярные системы контроля — Git, Apache Subversion (она же SVN) и Mercurial.

  • Облачные сервисы

Это важный аспект организации многих процессов: коммуникации, обмена результатами работы, тестирования. Чаще всего речь идет об AWS, Microsoft Azure, сервисах Google, Selectel Cloud Platform, Яндекс.Облако, MCS.

  • Системы оркестрации

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

  • Управление конфигурациями на серверах

Когда для проекта используется несколько серверов, ими сложно управлять вручную, так как это повышает вероятность ошибок. Для этого есть специальные системы конфигурирования — Chef, Puppet, Ansible. С их помощью можно создавать скрипты, которые позволяют проводить операции на серверах автоматически, облегчая работу системного администратора.

В каких случаях компании необходимо внедрение DevOps

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

Найм DevOps-инженера или команды

Несмотря на то, что DevOps — сравнительно молодая методика, спрос на специалистов в этой области продолжает расти. Согласно данным статистического сервиса Statista, 96% IT-компаний признают необходимость методологии DevOps, а на HH.ru каждый месяц появляются около 100 новых вакансий.

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

Иногда бывает так, что компании нужен не один инженер, а целая команда: разработчик, QA-специалисты, администраторы. Собрать команду и настроить её работу намного сложнее — особенно, если ранее в компании с такой задачей не сталкивались.

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

Как начать работать с нами?
01
Напишите нам
Поделитесь своей идеей, техническими требованиями и важными деталями
02
Мы обсудим проект
Разработчики предложат решение вашей задачи, а менеджеры подготовят расчёт
03
Выберем формат работы
Мы расскажем о разных моделях работы команды и вашего участия в проекте
04
Составим roadmap проекта
Определим ключевые шаги и сформируем дорожную карту разработки проекта
05
Выделим команду
Найдём специалистов нужного уровня и подготовим их к работе над проектом
06
Подпишем документы
Как только мы определимся с условиями и деталями, подписываем контракт и стартуем
07
Начнём работу
Команда начнёт работу и будет держать вас в курсе продвижения проекта к реализации

Где искать DevOps-специалиста

Можно воспользоваться классическими ресурсами для размещения вакансий вроде HH, но существуют и профильные площадки: StackOverFlow, DZone, группы в LinkedIn, русскоговорящее сообщество и канал с вакансиями и резюме в «Телеграме». Искать кандидатов можно и в офлайне, на DevOps-конференциях: DevOops, DevOpsDays, DevOpsConf. Кандидатов много, с их количеством проблем нет. Вопрос только в качестве.

Какие вопросы задавать на собеседовании

Мы уже описали необходимые компетенции, теперь приведем примеры вопросов из разных областей, ответы на которые должен знать кандидат. Плюс дадим приемлемые ответы.

1. Какие инструменты вы используете для следующих процессов и почему?

  • CI/CD (Jenkins, Circle CI, Travis, GitLab CI, Github Actions)
  • Управление IT-инфраструктурой (Terraform, CloudFormation)
  • Управление конфигурациями (Ansible, Puppet, Chef)
  • Мониторинг (Prometheus, Nagios)
  • Ведение логов (Logstash, Graylog, Fluentd)
  • Ревью кода (Gerrit, Review Board)
  • Тестирование (Robot, Serenity, Gauge)

2. Что такое Agile? (Это методика разработки ПО, включающая в себя итеративный подход и регулярный пересмотр требований к продукту).

3. Что такое ‘component-oriented programming’? (Это компонентно-ориентированная разработка, метод, в котором разработчики ищут готовые качественные компоненты и формируют из них новый продукт).

4. Что такое автоматическое тестирование и в чем его преимущества? (Это тестирование с помощью скриптов вместо ручных операций. Оно экономит время и деньги, снижает риск ошибок и позволяет быстро проводить масштабные тесты, которые при ручном проведении заняли бы очень много времени).

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

6. Доводилось ли вам писать скрипты для Jenkins? Если да, то для чего и как они работали?

7. Какие существуют типы облачных платформ? (IaaS, PaaS, SaaS) Объясните суть каждого из них. (Infrastructure as a service — когда провайдер предоставляет только вычислительные мощности без софта, оболочек и пр, а пользователь сам разворачивает там среду. Platform as a service — когда провайдер предоставляет готовую среду на Windows или Linux, а пользователь устанавливает там свои продукты. Software as a service — полностью готовое прикладное ПО, вроде Gmail или YouTube).

8. Что такое EC2? (Веб-сервис от Amazon, предоставляющий доступ к облачным вычислительным ресурсам для быстрой настройки и масштабизации).

9. Расскажите о своем опыте работы со средами Windows и Linux. Что делают следующие Linux-команды и как их можно использовать?

  • tee (Читает со стандартного ввода (stdin) и выводит на стандартный вывод (stdout) и в указанный файл. Можно использовать, когда скрипту нужно и записать лог, и при этом выводить сообщения на экран в режиме реального времени)
  • awk (Потоковый редактор, изменяющий выводимый текст. Можно использовать для оперирования многоколоночным текстом)
  • curl (Клиент-программа для взаимодействия с веб-серверами в формате url-обращений. Это удобный способ для управления: проверить доступность, статус, получить API)

10. Что такое Docker и для чего его используют? (Это инструмент для управления контейнерами, запущенными на виртуальных машинах, и их оркестрации).

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

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

  • Высокий уровень ответственности — DevOps в ответе за результат всей команды. 
  • Хорошие коммуникационные навыки и умение работать в команде — DevOps-инженер должен уметь найти общий язык со всеми.
  • Управленческие навыки — DevOps настраивает и контролирует множество процессов.

Проверить эти навыки поможет сбор рекомендаций с предыдущих мест работы.

Аутсорс

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

Если вы хотите оптимизировать процесс разработки, расскажите о вашем проекте

У нас большой опыт в DevOps и широкий стек используемых технологий: Bash, Python, Ruby, Docker, Kubernetes, AWS, Git и многие другие. В зависимости от вашей ситуации мы можем выделить одного удалённого инженера или целую команду специалистов, которые подключатся к процессу на любом этапе. Расскажите нам о ваших задачах, и мы обсудим варианты сотрудничества.

 

Будем на связи
Прикрепить файл
Максимальный размер файла: 2 МБ.
Допустимые типы файлов: jpg jpeg png txt rtf pdf doc docx ppt pptx.