Что такое синее развертывание (Blue-Green Deployment)?

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

Ответ

Сине-зеленое развертывание (Blue-Green Deployment) — это стратегия выпуска, при которой поддерживаются две идентичные производственные среды: "синяя" (активная, текущая версия) и "зеленая" (новая версия). После развертывания и тестирования новой версии в "зеленой" среде весь пользовательский трафик мгновенно переключается с синей на зеленую.

Как это выглядит на практике (упрощенный пример):

  1. Инфраструктура: Два идентичных набора серверов/контейнеров (Blue v1.0 и Green v1.1), балансировщик нагрузки (Nginx, HAProxy, облачный LB).
  2. Состояние: Весь трафик идет на Blue.
  3. Деплой: Новая версия приложения разворачивается на Green. Проводятся smoke-тесты.
  4. Переключение: Конфигурация балансировщика изменяется, и весь трафик начинает направляться на Green.

Пример конфигурации переключения через Nginx:

# Исходная конфигурация (трафик на blue-backend)
upstream app_backend {
    server blue-backend:8080;
}

# После деплоя на green и успешных тестов меняем upstream
# (Это можно сделать через Ansible, Terraform, или API облачного провайдера)
sed -i 's/blue-backend:8080/green-backend:8080/' /etc/nginx/conf.d/app.conf
nginx -s reload  # Graceful reload без разрыва соединений

Преимущества с точки зрения DevOps:

  • Мгновенный откат: В случае проблем с новой версией трафик переключается обратно на Blue одной командой.
  • Нулевое время простоя (zero-downtime): Пользователи не видят прерывания сервиса.
  • Упрощенное тестирование в production-like среде: Зеленую среду можно протестировать на реальных данных, но без пользовательского трафика.
  • Снижение риска: Исключаются сложные миграции "на лету" и проблемы с совместимостью версий в одной среде.