Найти тему
IT-Academy

DevOps — это культура или профессия?

Оглавление

DevOps (акроним от Development Operations), по мнению многих айтишников, является ни чем иным, как культурой, методологией, но никак не профессией. Однако вакансии с тайтлом DevOps-инженер — частое явление на трудовом IT-рынке. Что же такое DevOps на самом деле? Этот неоднозначный вопрос рассмотрел Виталий Беляков, Senior System Engineer в компании EPAM на конференции Open IT Minsk 2022. Делимся главными тезисами из выступления спикера.

Как появился DevOps?

Во времена, когда IT-гиганты только начинали свой путь, разработка программных продуктов строилась по Waterfall, который подразумевал разделение процесса разработки на отдельные блоки с участием определенной команды. По окончании блока работа этой команды заканчивалась, и ответственность переходила к другой команде. Например, изначально был какой-то бизнес-запрос, у которого была концепция и средства на имплементацию решения. На его основе формировались требования, затем бизнес-аналитика формировала дизайн. Далее все это передавалось на разработку, затем в работу включались тестировщики, потом продукт переходил к инженерам operations на стадию развертывания. Далее продукт отправлялся support-командам, которые осуществляли длительную поддержку жизненного цикла приложения. Таким образом, у проекта были ярко выраженные стадии, где все команды исполняли свою обособленную работу.

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

В итоге пришли к выводу, что технические специалисты (technical cover) должны постоянно реагировать на запросы от бизнеса и формировать определенную культуру взаимодействия между всеми командами. Команды должны не изолироваться, а идти на коллаборацию. Это послужило фундаментом для новой методологии, которая в 2001 году получила название Agile.

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

Кроме того, Agile предложил идею, согласно которой процесс разработки не должен иметь огромный набор сиюминутных изменений. Это должны быть постепенные оперативные изменения. В результате появились такие термины, как continuous integration и continuous delivery. То есть приложения перестают быть чем-то монолитным, а становятся частью потока коллаборации с инженерами, бизнесом, рынком и пользователями. На основе этой идеи сформировалась такая рабочая схема, как Scrum. Она подразумевает наличие спринтов, разделение большой работы на маленькие части.

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

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

Какие инструменты использует DevOps-инженер?

  • Системы управления версиями кода (Git, GitHub, Bitbucket)
  • Облачные технологии (Azure Cloud, Amazon Web Services, Google Cloud Provider)
  • Автоматизация развертывания виртуальной инфраструктуры (Terraform)
  • Системы конфигурации систем (Ansible, DSC и т. д.)
  • Построение процессов автоматизации доставки кода (СI/CD)
  • Системы управления контейнерными инфраструктурами (Docker, Kubernetes)

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

DevOps — это частично и профессия, и культура. Это коллаборация двух данных терминов.

С точки зрения профессии, DevOps подразумевает:

  • Непрерывную интеграцию и непрерывную поставку (CI/CD) ( Devops-инженеры должны быть способны организовать те или иные решения для своей команды).
  • Настройку и управление системами контроля версий для обеспечения работы своей команды.
  • Обеспечение гибкой разработки ПО (Применимая к проекту DevOps-практика должна диктовать определенные правила игры).
  • Рассмотрение своей инфраструктуры как кода (Вся структура должна быть описана при помощи средств автоматизации и конфигурации).
  • Обеспечение непрерывного мониторинга сервисов (Все должно быть прозрачно, Devops-инженеры должны понимать, как их сервис взаимодействует и ведёт себя в той или иной ситуации).

При этом в DevOps важны такие культурные аспекты, как:

  • Сотрудничество, видимость, согласование (Необходимо строить сотрудничество между командами и проектами, поддерживать прозрачность и видимость для всех членов команды, действовать согласованно и двигать проект в одном направлении).
  • Ответственность и принятие решений (Каждый член команды должен нести ответственность и принимать решения в той или иной ситуации в зависимости от своей экспертизы).
  • Более короткие релизы циклов (Они должны содержать минимальный набор изменений и не "взрывать" умы пользователей и сознание разработчиков).
  • Непрерывное обучение (Каждый член команды должен непрерывно обучаться и обучать коллег правильному взаимодействию с теми инструментами, с которыми они работают).

Summary

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

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

#DevOPs #сисадмин #айтикурсы