Непрерывный 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 зависит от потребностей бизнеса и особенностей конкретного приложения. При желании (и определенной сноровке) вы можете подобрать их самостоятельно. Но если не уверены в своем выборе, лучше поручить эту работу профессионалам.