← Назад к вопросам

В чем разница между Delivery и Deployment?

1.7 Middle🔥 141 комментариев
#Docker, Kubernetes и DevOps

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

# Разница между Delivery и Deployment

Это два тесно связанных, но разных понятия в контексте DevOps и непрерывной интеграции:

Delivery (Доставка)

Delivery — это процесс автоматизации подготовки кода к выпуску в production. Это не сам выпуск, а подготовка к нему.

Характеристики:

  • Код автоматически собирается (build)
  • Проходит все тесты (unit, integration)
  • Создаётся артефакт (JAR, Docker image)
  • Всё готово для развертывания, но не развёртывается автоматически
  • Требует ручного решения оператора/DevOps инженера для развертывания
  • Это Continuous Delivery (CD)

Пример workflow:

Git commit → Build → Tests → Docker image → Registry → Ready for production

Deployment (Развёртывание)

Deployment — это процесс развёртывания приложения в production окружении.

Характеристики:

  • Приложение действительно запускается в production
  • Трафик маршрутизируется на новую версию
  • Состояние приложения меняется на production
  • Может быть ручным или автоматическим
  • Это финальный шаг, после которого пользователи используют новый код

Пример:

Pull Docker image → Stop old container → Start new container → Health check

Ключевая разница

АспектDeliveryDeployment
Что происходитПодготовка артефактаЗапуск в production
АвтоматизацияПолностью автоматизированоМожет быть ручным
Вовлечение человекаМинимально (просмотр метрик)Требует одобрения
Этап в pipelineПромежуточныйФинальный
РискНизкий (код не в production)Высокий (код работает с реальными данными)

Continuous Deployment vs Continuous Delivery

  • Continuous Delivery: каждый commit готов к production → требует ручного deployment
  • Continuous Deployment: каждый commit автоматически попадает в production

Старт Continuous Deployment более рискован, поэтому многие компании останавливаются на Continuous Delivery.

Практический пример на Java

# Delivery часть (CI/CD pipeline)
./mvnw clean package -DskipTests  # Build
./mvnw test                        # Tests
docker build -t app:1.2.3 .       # Docker image
aws ecr push app:1.2.3             # Push to registry
# → Артефакт готов, ждём решения

# Deployment часть (ручное или автоматическое)
kubectl set image deployment/app app=app:1.2.3  # Обновить в production
kubectl rollout status deployment/app             # Проверить статус

Оба процесса критичны для современной разработки, но важно понимать, где заканчивается автоматизация и начинается контролируемый human oversight.

В чем разница между Delivery и Deployment? | PrepBro