Непрерывный DevOps-2: принципы и инструменты CI/CD

Непрерывный DevOps-2: принципы и инструменты CI/CD

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

3 главных принципа CI/CD

Распределение ответственности

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

  • Разработчики – отвечают за логику и функциональность продукта, создают рабочую копию, которая становится базой для всех других специалистов.
  • Инженеры по качеству – отвечают за качество созданного продукта и корректную работу всех заложенных в него функций.
  • Бизнес-аналитики – отвечают за приемлемость продукта. В частности, они собирают пользовательские истории и сверяют их с результатами тестирований.
  • Специалисты оперативного отдела (в том числе и DevOps-инженеры) – отвечают за развертывание приложения в производственной среде и его непрерывную доставку пользователям.

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

 Минимизация рисков

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

  • Разработчики – следят, чтобы не нарушалась логика продукта.
  • Инженеры по качеству – следят за сохранностью целостности пользовательских потоков и проводят тесты для снижения риска нарушения этих потоков.
  • Бизнес-аналитики – следят за удобством использования продукта и снижением риска создания некорректных или ненужных функций приложения.
  • Специалисты оперативного отдела – следят за развертыванием приложения и минимизируют (в идеале – вообще нивелируют) риск недоступности готового продукта.

Когда CI/CD работает как конвейер, каждая функциональная группа становится фильтром качества продукта. Успешное прохождение всех фильтров – залог минимизации рисков на всех этапах жизненного цикла приложения.

 Быстрая обратная связь

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

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

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

Практические инструменты для CI/CD

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

Вот лишь короткий список наиболее популярных и удобных инструментов для CI/CD:

  • Локальные платформы: GitLab, Docker, Jenkins, Puppet, Bamboo, Circle, TeamCity.
  • Облачные сервисы: Travis, BitBucket Pipelines, Buddy, Codeship.

Выбор инструментов CI/CD зависит от потребностей бизнеса и особенностей конкретного приложения. При желании (и определенной сноровке) вы можете подобрать их самостоятельно. Но если не уверены в своем выборе, лучше поручить эту работу профессионалам.