Что такое CD (Continuous Delivery и Continuous Deployment)
CD (Continuous Delivery / Continuous Deployment) — это набор практик, расширяющих CI и обеспечивающих автоматизированную доставку программного обеспечения до конечных окружений. Аббревиатура CD имеет два значения, которые важно различать.
Continuous Delivery (непрерывная доставка)
Continuous Delivery — это практика, при которой код всегда находится в состоянии, готовом к развертыванию в продуктивную среду. Развертывание на production выполняется вручную по решению команды (нажатие кнопки).
Continuous Deployment (непрерывное развертывание)
Continuous Deployment — это расширение Continuous Delivery, при котором каждое изменение, прошедшее все этапы пайплайна (сборка, тесты, проверки), автоматически разворачивается на production без ручного вмешательства.
Аналогия: Continuous Delivery — это как собранная и упакованная посылка, стоящая на столе, которую отправляют по команде менеджера. Continuous Deployment — это автоматическая лента, которая сама увозит посылку на отправку, как только она собрана и проверена.
Сравнение Continuous Delivery и Continuous Deployment
| Критерий | Continuous Delivery | Continuous Deployment |
|---|---|---|
| Деплой на production | Ручной (по кнопке) | Автоматический |
| Требования к тестам | Высокие | Очень высокие |
| Применимость | Банки, enterprise, регулируемые отрасли | Стартапы, SaaS, продуктовые компании |
| Контроль | Больше контроля, возможность аудита | Максимальная скорость доставки |
| Частота релизов | По решению команды | При каждом успешном коммите |
Связь CI, Continuous Delivery и Continuous Deployment
Пример
CI Continuous Delivery Continuous Deployment
[Build -> Test] ----> [Stage -> Approve] --------> [Auto-deploy to Prod]
^ ^
Ручная кнопка Полная автоматизация
Вывод
В банковской среде, как правило, используется Continuous Delivery, так как развертывание на production требует согласования, проверки compliance и ручного подтверждения. Continuous Deployment больше подходит продуктовым компаниям с высоким уровнем автоматизации тестирования.
На собеседовании: ключевой момент — уметь четко различать Continuous Delivery и Continuous Deployment. Часто задают вопрос: «Какой подход вы бы выбрали для банковского проекта и почему?» Правильный ответ — Continuous Delivery из-за регуляторных требований.