Какая разница между развертыванием Red/Black и Blue/Green Deployment?

Я слышал, что оба описывали идею развертывания обновления на новых машинах, сохраняя при этом старые машины активными, готовыми к откату в случае возникновения проблемы. Я также слышал, что раньше он описывал распределение нагрузки между обновленными и старыми службами, опять же с целью отката - иногда прерывая неактивные старые исправления, а иногда нет.

Я также понимаю, что это строго для облачных сервисов.

Может ли кто-нибудь помочь демистифицировать эти термины?

Ответ 1

И синее/зеленое, и красное/черное развертывание представляют собой ту же концепцию.

В то время как первый является наиболее распространенным термином, последний, по-видимому, используется главным образом в Netflix и их инструментах (например, Spinnaker).

Они применяются только к облачным, виртуализованным или контейнерным сервисам в том смысле, что ваша инфраструктура должна быть автоматизирована, чтобы понять этот подход.

Ответ 2

Сине-зеленое развертывание

Классическая техника развертывания, описанная в книге Непрерывной доставки Джезом Хамблом и Дэвидом Фарли:

Идея состоит в том, чтобы иметь две идентичные версии вашей продакшен среды, которые ну называйте синим и зеленым... Пользователи системы перенаправляются в зеленую среду, которая является в настоящее время назначенным производством. Мы хотим выпустить новую версию приложения. Таким образом, мы развернем его в синей среде... Это никоим образом не влияет на работу зеленой среды. Мы можем провести тесты дыма против синей среды, чтобы убедиться, что она работает правильно. Когда все будет готово, перейти на новую версию так же просто, как изменить конфигурацию маршрутизатора так, чтобы она указывала на синюю среду вместо зеленой. Синяя среда, таким образом, становится производством. Это переключение обычно может быть выполнено за гораздо меньше секунды. Если что-то идет не так, мы просто переключаем маршрутизатор обратно в зеленую среду. '

Затем Хамбл и Фарли продолжают упоминать главную проблему: иметь дело с изменениями схемы базы данных между зеленой и синей версиями.

Основным преимуществом сине-зеленого развертывания является нулевое или почти нулевое время простоя при выпуске новой версии. А сине-зеленое развертывание позволяет выпускать канарейку.

Красно-чёрное размещение

Красная версия жива в производстве. вы развертываете версию Black на одном или нескольких серверах. Когда версия Black полностью работоспособна, вы переключаете маршрутизатор для направления на него всего трафика (или вы масштабируете Red до 0 экземпляров и Black до N). Если что-то пойдет не так, вы вернете операцию. Таким образом, оно похоже на сине-зеленое развертывание, но есть небольшая разница: в сине-зеленом развертывании обе версии могут получать запросы одновременно, в то время как в красно-чёрном только одна из версий получает трафик в любой момент времени. Вот некоторые подтверждения:

В любое время активна только одна из сред, причем живая среда обслуживает весь производственный трафик. В этом примере красный в данный момент активен, а черный бездействует (в этом случае мы сократили количество черных до нуля серверов)...

Поэтому красно-черный - это специализация сине-зеленого. Но красно-чёрное развертывание - это более новый термин, используемый Netflix, Istio и другими платформами/платформами, которые поддерживают оркестровку контейнеров. Фактическое значение может варьироваться, и многие люди используют "красно-черный" в качестве другого термина для "сине-зеленого", возможно, только потому, что цвета их команды - красный и черный.: ^)