hostprofi.ru
Подобрать хостинг
Термин·буква C

Continuous Deployment

краткое определение

Continuous Deployment (CD) — практика автоматического развёртывания каждого изменения кода в продакшен после прохождения тестов, без ручного одобрения. Сокращает время от коммита до работы в продакшене до минут.

Continuous Deployment — расширение Continuous Delivery: каждый коммит, прошедший автоматические тесты, автоматически деплоится в продакшен. Нет ручного этапа «нажать кнопку деплой» — система сама принимает решение на основе результатов тестов.

Как работает

Пайплайн CD: коммит в репозиторий → запуск тестов (unit, integration, e2e) → при 100% прохождении → сборка артефакта (Docker-образ, JAR, npm bundle) → автоматический деплой на production. Общее время: 5-15 минут для большинства проектов.

Стратегии деплоя: Blue-Green (переключение между двумя идентичными окружениями), Canary (постепенное переключение трафика — 1% → 10% → 100%), Rolling Update (замена экземпляров по одному). Автоматический rollback при росте error rate.

Инструменты: GitHub Actions, GitLab CI/CD, CircleCI, ArgoCD (GitOps для Kubernetes), Spinnaker (Netflix). Для Kubernetes — GitOps через ArgoCD: состояние кластера синхронизируется с Git-репозиторием автоматически.

История

Термин Continuous Deployment введён Тимоти Фитцем (Timothy Fitz) в 2009 году в статье про IMVU. Flickr публично описал деплой 10 раз в день в 2009 году. Netflix использует Spinnaker для тысяч деплоев в день. Jez Humble и David Farley систематизировали практику в книге «Continuous Delivery» (2010).

Continuous Deployment vs Continuous Delivery

  • Continuous Integration: автоматическая сборка и тестирование каждого коммита.
  • Continuous Delivery: артефакт готов к деплою в любой момент, но требует ручного одобрения.
  • Continuous Deployment: артефакт деплоится автоматически без ручного шага.

Связь с хостингом

CD требует инфраструктуры, поддерживающей zero-downtime деплой: Kubernetes с rolling updates, либо несколько VPS за балансировщиком нагрузки. На одиночном VPS CD реализуется через rsync + reload nginx без перезапуска (graceful reload).

Ключевые отличия от похожих терминов

CI/CD — общее название для практик непрерывной интеграции и доставки. Continuous Deployment — наиболее автоматизированная форма CD. Подходит для продуктов с высоким тестовым покрытием; для сложных корпоративных систем с compliance-требованиями CD с ручным одобрением предпочтительнее.

Continuous Integration vs Delivery vs Deployment

CI (Integration): автоматические тесты при каждом push. CD (Delivery): автоматическая подготовка к деплою, ручное нажатие. CD (Deployment): автоматический деплой на production без ручного вмешательства. Full CD (Deployment) применяют при хорошем покрытии тестами (>80%) и зрелых процессах.

Инструменты CI/CD

GitHub Actions: YAML-конфиг в .github/workflows. CircleCI: облачный, популярен для Node.js. GitLab CI: встроен в GitLab. Jenkins: self-hosted, максимальная гибкость. ArgoCD: GitOps для Kubernetes. Flux: альтернатива ArgoCD.

CD для VPS

Простой деплой через GitHub Actions: SSH-сессия → git pull → systemctl restart. Более надёжный: Docker pull → docker-compose up -d. Zero-downtime: Blue-Green или rolling update. Rollback: переключение Nginx на предыдущую версию директории/контейнера.

Другие термины