Что такое Continuous Delivery (CD)

«Что такое Continuous Delivery (CD)» — вопрос из категории CI/CD, который задают на 26% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Continuous Delivery (CD) — это практика разработки, при которой любое изменение кода, прошедшее автоматизированные тесты в конвейере CI, может быть развернуто в production-среду быстро, безопасно и в любой момент одним действием (часто — нажатием кнопки). Ключевая цель — всегда иметь готовый к релизу артефакт.

Основные принципы и компоненты CD-пайплайна:

  1. Полная автоматизация сборки, тестирования и развертывания. После коммита в основную ветку запускается цепочка, не требующая ручного вмешательства до самого релиза.
  2. Деплой в production-like среды. Код автоматически разворачивается в staging/предпродакшн-среду, идентичную продакшену, для финального приемочного тестирования.
  3. Ручное утверждение релиза. Решение о развертывании в прод принимает человек (тимлид, менеджер). Это ключевое отличие от Continuous Deployment, где деплой в прод также полностью автоматизирован.

Пример этапов CD-пайплайна в GitLab CI:

stages:
  - build
  - test
  - deploy:staging
  - deploy:production  # Триггерится вручную

build_job:
  stage: build
  script:
    - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA .
    - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHA

deploy_to_staging:
  stage: deploy:staging
  script:
    - kubectl set image deployment/myapp app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -n staging
  environment:
    name: staging
    url: https://staging.myapp.com

# Этот джоб требует ручного запуска через UI GitLab
release_to_production:
  stage: deploy:production
  script:
    - kubectl set image deployment/myapp app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHA -n production
  environment:
    name: production
    url: https://myapp.com
  when: manual  # Критичный параметр для Delivery

Преимущества CD: Снижение рисков релиза (мелкие инкрементальные изменения), быстрое получение фидбека, возможность выпускать фичи по требованию бизнеса.