DevOps: что следует знать о роли подобных специалистов?

DevOps: что следует знать о роли подобных специалистов?

Еще несколько лет назад точное определение DevOps не требовалось, потому что реалии были совсем другие. Программисты играли одновременно множество ролей: они были фулстек-разработчиками, аналитиками, тестировщиками… Можно сказать, что круг обязанностей DevOps понимался очень интуитивно.

Позже ситуация стала меняться.

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

Так кто же такой DevOps?

DevOps отвечает за вопросы, связанные с автоматизацией процессов в проекте, в том числе для организации: 

  • локальной среды, 
  • репозитория кода, 
  • инфраструктуры и пайплайна CI/CD. 

DevOps — это просто особая роль и специализация, как у разработчика или тестировщика. Однако это не так просто.

Навыки, связанные с облачными решениями, автоматизация конвейеров CI/CD, очень хорошее знание специализированных инструментов, глубокое знание цикла разработки ПО... Это целый набор знаний, которые необходимо постоянно развивать.

За что отвечает DevOps?

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

Можно выделить четыре основных направления, которыми занимается DevOps:

Местная среда. DevOps должен помочь организовать локальную среду для разработчиков и тестировщиков. Часто это сводится к использованию docker-compose или vagrant.

Репозиторий кода. DevOps поможет в организации репозитория кода как приложения, так и всей инфраструктуры. В некоторых проектах также необходимо будет объяснить команде, как работать с выбранной моделью управления версиями. Почему? Иногда проекты относительно просты (например, монолит в одном репозитории с простой моделью непрерывной интеграции). Однако все чаще компании сталкиваются с более сложными проектами — со множеством репозиториев, со сложным процессом выпуска, с большим количеством одновременно производимых независимых функциональных возможностей. Управление таким репозиторием — нетривиальная задача.

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

Конвейерная CI/CD. Реализация конвейера CI/CD — еще одно важное направление работы DevOps. Такой пайплайн может быть простым. В настоящее время часто используются все более и более сложные подходы, например, основанные на разветвленных конвейерах или аналогичных методах в других инструментах.