Стратегия выпуска Канарских островов против Blue/Green
Мое понимание выпуска канарейки заключается в том, что это частичный выпуск подмножества производственных узлов с включенными липкими сессиями. Таким образом, вы можете контролировать и минимизировать количество пользователей/клиентов, которые пострадали, если вы в конечном итоге выпустили плохую ошибку.
Мое понимание синего/зеленого релиза состоит в том, что у вас есть две зеркальные производственные среды ( "синий" и "зеленый" ), и вы сразу же нажимаете изменения на все узлы синего или зеленого цвета, а затем используете сети магия для контроля того, какие пользователи окружения перенаправляются через DNS.
Итак, прежде чем я начну, если что-то, что я сказал до сих пор, неверно, начните с исправления!
Предполагая, что я более или менее на ходу, затем несколько вопросов о двух стратегиях:
- Существуют ли сценарии, где канарейка предпочтительнее синего/зеленого и наоборот?
- Существуют ли сценарии, в которых модель развертывания может одновременно реализовать обе стратегии?
Ответы
Ответ 1
Сине-зеленое высвобождение проще и быстрее.
Вы можете сделать сине-зеленую версию, если вы протестировали новую версию в тестовой среде и очень уверены, что новая версия будет работать правильно в процессе производства. Всегда использовать функции toggles - это хороший способ повысить уверенность в новой версии, поскольку новая версия работает точно так же, как и старая, пока кто-то не переключит функцию переключения. Разрушение вашего приложения на небольшие, независимо освобождаемые услуги - другое, так как есть меньше тестов и меньше, чем можно сломать.
Вам нужно сделать канарейку, если вы не полностью уверены, что новая версия будет работать правильно на производстве. Даже если вы являетесь тщательным тестером, Интернет является большим и сложным местом и всегда сталкивается с неожиданными проблемами. Даже если вы используете функциональные переключатели, можно было бы реализовать неправильно.
Автоматизация развертывания требует усилий, поэтому большинство организаций планируют каждый раз использовать одну стратегию или другую.
Итак, сине-зеленое развертывание, если вы привержены практикам, которые позволяют вам быть уверенными в этом. В противном случае отправьте канарейку.
Сущность сине-зеленого развертывается сразу, а суть развертывания канарейки развертывается постепенно, поэтому, учитывая единый пул пользователей, я не могу представить себе процесс, который я бы описал как выполняющий оба одновременно, Если у вас несколько независимых пулов пользователей, например. используя различные региональные центры обработки данных, вы можете сделать сине-зеленый в каждом центре обработки данных и канарейке через центры обработки данных. Хотя, если вам не нужно канареечное развертывание в центре обработки данных, вам, вероятно, не понадобится это в центрах обработки данных.
Ответ 2
Я написал подробное эссе по этой теме здесь: http://blog.itaysk.com/2017/11/20/deployment-strategies-defined
На мой взгляд, разница в том, доступна ли новая "зеленая" версия реальным пользователям. Если это так, то я бы назвал это канарейка. Распространенным способом реализации Canary является обычный Blue/Green с добавлением интеллектуальной маршрутизации конкретных пользователей к новой версии. Прочитайте пост для подробного сравнения
Цвет морской волны:
![enter image description here]()
Канарейки:
![enter image description here]()
Ответ 3
Релизы "синий/зеленый" и "канарейка" решают одну и ту же цель тестирования программного обеспечения с целевой аудиторией, прежде чем предоставлять функции программного обеспечения более широкой аудитории.
В случае канарейки развертывания могут совместно использовать одну и ту же инфраструктуру, но в случае синего/зеленого вся инфраструктура дублируется с маршрутизатором /DNS/reverseproxy впереди для маршрутизации трафика.
В облачной среде, где проще создавать сценарии & Для воссоздания инфраструктуры предпочтительным является сине-зеленое развертывание, поскольку оно позволяет инфраструктуре синхронизироваться с автоматизацией. Это прекрасная возможность, когда требуется воссоздать окружение.
Вы можете обратиться к следующим статьям для более подробного сравнения:
Развертывание BlueGreen:http://martinfowler.com/bliki/BlueGreenDeployment.html
Канарское развертывание:http://martinfowler.com/bliki/CanaryRelease.html
Ответ 4
Хотя оба эти термина выглядят довольно близко друг к другу, они имеют тонкие различия. Один из них дает уверенность в выпуске вашей функциональности, а другой - как вы выпускаете.
Канарейки
Релиз Canary - это метод, позволяющий снизить риск внедрения новой версии программного обеспечения в производство путем медленного развертывания изменений для небольшой группы пользователей, прежде чем внедрять
вся инфраструктура.
Вскоре вы получите представление о том, как будет работать новая версия (интеграция с другими приложениями, процессор, память, использование диска и т.д.).
Синий/зеленый:
- Это больше о предсказуемом выпуске с нулевым временем простоя развертывания.
- Легкий откат в случае сбоя.
- Полностью автоматизированный процесс развертывания
Ответ 5
Хорошее начало определений.
Я думаю, что это также поможет в принятии решения для вашей стратегии, если вы разделите определение "релиз" на "развертывание" и "выпуск (функциональность)".
Развертывание (двоичные файлы)
Действие бинарного развертывания вашего продукта в (производственной) системе.
Выпуск (функциональность)
Действие по управлению доступностью функциональности для (групп) пользователей.
Почему? У вас обычно есть (несколько) две проблемы при "отпускании":
1) Ошибки/обратная совместимость/и т.д.
2) Проверка правильности/удобства использования новых функций
Затем спросите себя, прежде чем выбрать канарейку, сине-зеленую или любую другую стратегию с серым/смешанным режимом: с какими проблемами мы сталкиваемся при выпуске/развертывании новой версии? И только тогда, если вы знаете свои проблемы, выберите свою стратегию.
Кроме того, можно выполнять более сложные стратегии развертывания/выпуска.
Например, в некоторых облаках/инфраструктуре можно иметь несколько производственных серверов и передавать нагрузку в разных пропорциях на разные серверы и версии вашего продукта, а также контролировать надежность перед масштабированием выпуска/развертывания для всех пользователей.
Пометка функций
Действие "настройка" (холодная или даже горячая), какие функции (не) доступны для (группы) пользователей
Если вы также делаете что-то вроде "маркировки функций", вы можете сначала развернуть, измерить надежность вашего релиза с точки зрения обратной совместимости/ошибок и постепенно выпускать новые функции для разных пользователей или наоборот (уменьшать или даже уменьшать функциональность отката и/или двоичные файлы.).
Пометка функций позволяет отделить доступность функциональности от развертывания двоичных файлов и дает гораздо более детальное принятие решений, чем только "развертывание/откат"
Ответ 6
Вот несколько встроенных определений -
Сине-зеленое развертывание - при развертывании новой версии
приложение, вторая среда создается. Однажды новый
среда проверена, она берет свое начало от старой версии. Старый
среда может быть отключена.
- A/B-тестирование - одновременно работают две версии приложения. Часть запросов направляется каждому. Разработчики могут сравнить версии.
- Canary Release - Новая версия микросервиса запускается вместе со старыми версиями. Эта новая версия может затем принять часть запросов, и команда может проверить, как эта новая версия взаимодействует с системой в целом.