Публикация

Что такое Canary Release?

Если вы работаете над продуктом, который активно развивается и внедряет новые возможности, то тут вы узнаете как это делать эффективно используя Canary Release.

В свое время пришлось столкнуться с термином CanaryRelease, и я нашел крутое и содержательное пояснение в статье Martin Fowler Canary Release, материал ниже является от части переводом оригинала и моими личными дополнениями.

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

Основная Идея

На практике идея заключается в том, что мы начинаем с развертывания новой версии нашего ПО в инфраструктуре куда куда не перенаправляются пользователи.

https://api.bcode.dev/v1/content/storage/post/100028/2d37937d2add4997bd7c45ffc6d9f05c.png

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

Каких пользователей перенаправлять?

Существует несколько разных стратегий выбора пользователей, который должны будут увидеть новую версию вашего ПО:

  • simple strategy - самая простая, базирующаяся на случайной выборке;
  • scope strategy - некоторые продукты предпочитают протестировать новую версию на конкретной группе пользователей, например внутренних пользователей компании перед выпуском в мир;
  • user based strategy - базируется на выборке пользователей на основе их профиля и/или других демографических данных.

https://api.bcode.dev/v1/content/storage/post/100028/5e9d4bd60c7b4c3b9efcfb988ff0f843.png

По мере того, как вы становитесь более уверенными в новой версии, вы можете начать выпускать ее на большее количество серверов в вашей инфраструктуре и направлять на нее больше пользователей.

Хорошей практикой развертывания новой версии является перепрофилирование существующей инфраструктуры с помощью PhoenixServers или предоставление новой инфраструктуры и списание старой с помощью ImmutableServers.

Переход на новую версию

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

Если вы обнаружите какие-либо проблемы с новой версией, стратегия отката состоит в том, чтобы просто перенаправить пользователей обратно к старой версии, пока вы не исправите проблему.

https://api.bcode.dev/v1/content/storage/post/100028/7e6102dd21f442f7bd0d8b1fa9cd8858.png

Преимущества

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

Медленно увеличивая нагрузку, вы можете отслеживать показатели того, как новая версия ведет себя в production и какие показатели нагрузки она выдерживает.

Возможно вы уже слышали о Phased Rollout или Incremental Rollout, так вот это та же практика что и Canary Release.

Недостатки

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

Canary Release практически не применим к ПО которое распространяется для установке локально пользователям, в таком случае сложно контролировать процесс обновления на новую версию.

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

Существует подход ParallelChange, который позволяет решить некоторых из этих проблем, об этом можно почитать более детально в статье Danilo Sato.

Вариации использования

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

Например, если у вас есть географически распределенные пользователи, вы можете сначала развернуть новую версию в регионе.

Facebook предпочитает использовать стратегию с несколькими Canary Releases, первая из которых видна только их внутренним сотрудникам и включает все изменения новой версии, чтобы они могли обнаруживать проблемы первыми.

https://api.bcode.dev/v1/content/storage/post/100028/6ca0f428f44e4e73bd0c01464a6332c5.png

Опубликовано: 6 июля 2021 г.Просмотров: 126

Комментарии

Мы не даем слово анониму 😶
Войдите, пожалуйста.

Еще никто не комментировал эту публикацию 🤔