Ответ
Сине-зеленое развертывание (Blue-Green Deployment) — это стратегия выпуска, при которой поддерживаются две идентичные производственные среды: "синяя" (активная, текущая версия) и "зеленая" (новая версия). После развертывания и тестирования новой версии в "зеленой" среде весь пользовательский трафик мгновенно переключается с синей на зеленую.
Как это выглядит на практике (упрощенный пример):
- Инфраструктура: Два идентичных набора серверов/контейнеров (Blue v1.0 и Green v1.1), балансировщик нагрузки (Nginx, HAProxy, облачный LB).
- Состояние: Весь трафик идет на Blue.
- Деплой: Новая версия приложения разворачивается на Green. Проводятся smoke-тесты.
- Переключение: Конфигурация балансировщика изменяется, и весь трафик начинает направляться на 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 среде: Зеленую среду можно протестировать на реальных данных, но без пользовательского трафика.
- Снижение риска: Исключаются сложные миграции "на лету" и проблемы с совместимостью версий в одной среде.