Blue-Green Deployment (сине-зелёное развёртывание)

Blue-green deployment — это стратегия релиза, при которой поддерживаются два идентичных полноценных продакшен-окружения — условно обозначаемые «blue» (текущая работающая версия) и «green» (новая разворачиваемая версия) — и весь живой трафик переключается с blue на green одним, почти мгновенным переходом сразу после того, как green-окружение подтверждено как исправное, вместо постепенного обновления существующего работающего окружения «на месте». Если после переключения что-то пойдёт не так, откат столь же мгновенен: переключить трафик обратно на blue, которое всё это время полностью работало и оставалось нетронутым. Почему это важно для AI/SaaS-разработчиков: blue-green deployment по сути устраняет простой при развёртывании и радикально снижает риск релизов, поскольку новая версия полностью развёрнута и может пройти smoke-тестирование на реальной продакшен-инфраструктуре (подключения к базе данных, реальная конфигурация, реальные зависимости) ещё до получения живого пользовательского трафика, а неудачный релиз можно отменить за секунды, а не через медленную пересборку и повторное развёртывание при откате. Компромисс — стоимость и сложность: одновременный запуск двух полноценных параллельных продакшен-окружений (даже кратковременно) означает удвоение инфраструктуры на момент переключения, а изменения схемы базы данных требуют аккуратной обработки, поскольку оба окружения, blue и green, могут в переходный период работать с одной и той же базой данных. Как это работает: green-окружение подготавливается и разворачивается с новой версией, пока blue продолжает обслуживать 100% живого трафика, оставаясь полностью незатронутым. Как только green проходит автоматические smoke-тесты и проверки работоспособности, конфигурация роутера или балансировщика нагрузки обновляется так, чтобы направлять новый трафик на green вместо blue, — это переключение обычно является просто изменением конфигурации (обновление целевой группы балансировщика нагрузки или обновление маршрутизации DNS/трафика), а не повторным развёртыванием, именно поэтому оно быстрое и низкорисковое. Blue какое-то время держат работающим в режиме простоя специально для того, чтобы был возможен мгновенный откат, если под реальным трафиком проявятся проблемы, не пойманные тестированием. Разбор примера: SaaS-компания разворачивает крупное обновление бэкенда, используя blue-green deployment на AWS. Они подготавливают полноценное green-окружение (новая версия приложения, то же подключение к базе данных, та же конфигурация) рядом с текущим работающим blue-окружением. После того как green проходит автоматические проверки работоспособности и ручное smoke-тестирование на небольшом проценте синтетического трафика, инженер обновляет целевую группу балансировщика нагрузки, направляя 100% реального трафика на green, — клиенты не испытывают никакого простоя во время переключения. Двадцать минут спустя под реальной продакшен-нагрузкой проявляется незаметный баг, пропущенный тестированием; инженер немедленно возвращает целевую группу балансировщика обратно на blue, восстанавливая предыдущую рабочую версию менее чем за минуту, пока команда разбирается с проблемой green-окружения без какого-либо продолжающегося влияния на клиентов.

Похожие термины

Ещё термины: Инструменты разработки