Непрерывная доставка (Continuous Delivery, CD) — это методология разработки программного обеспечения, фокусирующаяся на возможности быстро, безопасно и устойчиво поставлять изменения в продакшн-среду. Основной принцип — всегда иметь готовый к релизу артефакт, который можно развернуть в любой момент времени.
Основные составляющие:
- Автоматизированная сборка: Код собирается и упаковывается автоматически при каждом коммите.
- Автоматизированное тестирование: Включает модульные, интеграционные, системные и другие виды тестов для проверки качества изменений.
- Автоматизированное развертывание: Процесс доставки артефакта в различные среды (разработка, тестирование, стейджинг, продакшн) автоматизирован.
- Пайплайн доставки (Delivery Pipeline): Визуализация workflow, через который проходят изменения от коммита до продакшена, включая сборку, тестирование и развертывание.
Ключевое отличие от Continuous Deployment:
В Continuous Delivery релиз в продакшн является ручным шагом (хотя и возможным в любой момент), тогда как в Continuous Deployment этот шаг тоже автоматизирован при успешном прохождении всех тестов и проверок.
Преимущества:
- Сокращение времени выхода на рынок (Time to Market).
- Снижение рисков при релизах за счет частых и небольших изменений.
- Повышение качества за счет интенсивного автоматизированного тестирования.
- Улучшение обратной связи от пользователей.
- Повышение эффективности команды за счет автоматизации рутинных операций.
Инструменты (примеры):
- Системы контроля версий: Git
- Системы сборки: Maven, Gradle, npm
- Серверы CI/CD: Jenkins, GitLab CI, GitHub Actions, CircleCI
- Инструменты для тестирования: JUnit, TestNG, Selenium, Cypress
- Инструменты для управления конфигурацией: Ansible, Chef, Puppet
- Платформы контейнеризации: Docker, Kubernetes
CD требует сильной культуры автоматизации, DevOps-практик и тесного сотрудничества между разработчиками, тестировщиками и операционными командами.