Ответ
Зеленое развертывание (Green Deployment) — это стратегия выпуска обновлений, при которой новая версия приложения ("зеленая" среда) разворачивается на полностью изолированной инфраструктуре, параллельно с работающей текущей версией ("синяя" среда). После успешного тестирования "зеленой" среды весь пользовательский трафик переключается на нее.
Как это работает на практике (например, в Kubernetes):
- Подготовка: У вас есть Deployment
my-app-blue(версия 1.0), обслуживающий трафик через Servicemy-app-service. - Развертывание: Вы создаете новый Deployment
my-app-greenс обновленным образом (версия 2.0). Он запускается независимо, не получая внешнего трафика.# my-app-green-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: my-app-green spec: selector: matchLabels: app: my-app version: "2.0" template: metadata: labels: app: my-app version: "2.0" spec: containers: - name: app image: my-registry/app:v2.0 - Тестирование: Выполняются smoke-тесты, интеграционные тесты и проверки на "зеленой" среде через внутренний служебный endpoint.
- Переключение трафика: Обновляется селектор Service
my-app-service, чтобы он начал направлять трафик на поды с меткойversion: "2.0". В Kubernetes это происходит практически мгновенно. - Откат: Если после переключения обнаружена критическая ошибка, откат тривиален — нужно вернуть селектор Service обратно на
version: "1.0". Старая "синяя" среда все еще работает.
Преимущества в DevOps-цикле:
- Нулевое время простоя (Zero Downtime): Переключение между идентичными, готовыми к работе средами.
- Мгновенный и безопасный откат: Позволяет откатить релиз за секунды, что критично для соблюдения SLA.
- Снижение риска: Позволяет провести полное тестирование новой версии в production-подобном окружении перед подачей на нее реального трафика.
- Упрощение A/B тестирования: Можно направлять часть трафика (например, через Istio) на "зеленую" среду для канареечного (canary) релиза.