Сегодня существует множество стратегий деплоя, и их число продолжает расти. При этом две из наиболее распространённых — те, что активно применяют крупнейшие компании, — это стратегии Canary и Blue-Green deployment.
Сравнивая Blue-Green deployment и Canary, нельзя сводить выбор только к скорости или простоте. Один из ключевых критериев — это время простоя при деплое.
Чтобы свести время простоя к минимуму и обеспечить плавный переход при выкатке обновлений или изменений, важно выбрать наиболее подходящий вариант из двух: Canary deployment или Blue-Green.
Давайте разберём, что предлагает каждая стратегия, сравним Blue-Green deployment и Canary напрямую и поделимся собственным опытом работы с обоими подходами.
Что такое Blue-Green Deployment и что он предлагает?
В стратегии Blue-Green новую версию приложения можно развернуть сразу после тестирования и проверки. Это возможно благодаря двум идентичным средам: синей и зелёной, отсюда и название.
Принцип работы прост: одна среда активна, другая нет. Новая версия разворачивается в неактивной среде (допустим, зелёной). Поскольку обе среды полностью идентичны по ресурсам, инфраструктуре и конфигурации, все проблемы с обновлением можно выявить и устранить ещё до полного запуска.
После тестирования, когда команда убеждается в работоспособности обновления, весь трафик переключается на эту среду. Неактивная зелёная среда становится активной, а ранее активная синяя уходит в резерв.
Теперь синяя среда в резерве: на ней можно тестировать следующие обновления, пока зелёная работает с только что задеплоенной версией. Простой при этом практически исключён, так как трафик переключается мгновенно.
Если в обновлении обнаружатся проблемы, откат позволяет вернуться к предыдущей версии приложения. Однако если разработчики уже начали работу над новым обновлением в неактивной среде, откат на неё становится невозможным: старая версия в этой среде больше не доступна.
Эту стратегию применяют многие компании. Один из показательных примеров — Spotify. Поскольку сервис должен работать круглосуточно, при каждом новом обновлении у Spotify всегда наготове резервная неактивная среда.
Что такое Canary Deployment и что он предлагает?
Главное отличие Canary от Blue-Green в том, что обновление разворачивается не сразу для всех пользователей, а сначала выкатывается на небольшую их часть.
Если в обновлении есть проблемы, с ними сталкивается лишь небольшая группа пользователей, которая и даёт обратную связь. После устранения проблем обновление получает более широкая аудитория, и процесс повторяется.
Цикл повторяется с постепенно расширяющейся аудиторией: все найденные проблемы устраняются, пока обновление не доходит до 100% пользователей. Например, сначала его получают 2%, затем 25%, потом 75% и наконец все.
Такой постепенный выкат в Canary даёт более управляемый и гибкий процесс: разработчики тестируют функции в контролируемых условиях, где потенциальные проблемы затрагивают лишь небольшую часть аудитории.
Canary тоже поддерживает откат. Но поскольку деплой идёт поэтапно, откат также выполняется поэтапно — до тех пор, пока система не вернётся к стабильной версии.
Известный пример этой стратегии — Netflix, который использует Canary совместно с инструментом Chaos Monkey: он намеренно вносит сбои в систему. Если сбой затрагивает Canary-среду, команда Netflix анализирует реакцию системы и вносит необходимые корректировки. Так Netflix убеждается, что обновление остаётся стабильным даже в нештатных условиях.
Blue-Green Deployment vs. Canary
Обе стратегии имеют свои преимущества и ограничения. Поэтому перед выбором стоит взвесить все плюсы и минусы Blue-Green и Canary.
Если после этого раздела вы всё ещё не определились, в конце статьи я описал наш собственный опыт работы с обеими стратегиями и выводы, к которым мы пришли.
Минимизация простоев
Один из ключевых вопросов этой статьи — сокращение простоев при Blue-Green и Canary деплое. Сильная сторона Blue-Green — скорость: обновление или новая функция разворачиваются мгновенно за счёт двух идентичных сред.
Canary, в свою очередь, за счёт поэтапного выката тоже сводит простои к минимуму: проблемы затрагивают лишь небольшую часть пользователей, а обратная связь на каждом этапе позволяет быстро устранять их без какого-либо простоя.
Оба подхода поддерживают откат, но в Blue-Green он выполняется мгновенно — это надёжная страховка на случай серьёзных проблем. Однако, как уже было сказано, если в неактивной среде ведётся работа над новой версией, предыдущая резервная версия будет недоступна.
Откат в Canary работает так же постепенно, как и само развёртывание. Зато он доступен всегда: стабильная старая версия не привязана к той среде, в которой тестируются и дорабатываются новые обновления.
Если сравнивать Canary и Blue-Green с точки зрения минимизации простоев, Canary выигрывает по контролю над рисками и гибкости управления. Но если говорить исключительно о сокращении времени простоя, Blue-Green предпочтительнее: переключение происходит мгновенно.
При этом, выбирая между Blue-Green и Canary, важно учитывать не только время простоя.
Тип приложения
Приложения можно условно разделить на транзакционные и контентные. Для транзакционных приложений Blue-Green — очевидно лучший выбор: здесь в приоритете высокая доступность и минимальный простой, а мгновенное переключение и мгновенный откат Blue-Green дают ему явное преимущество перед Canary.
Контентные приложения, напротив, не зависят от транзакций в реальном времени. Поскольку они, как правило, используются для социальных платформ и сервисов вовлечения аудитории, Canary здесь значительно эффективнее: обновления можно выкатывать постепенно и собирать обратную связь на каждом этапе.
Затраты на инфраструктуру
Ещё один важный фактор при выборе между Blue-Green и Canary — затраты. В Blue-Green они закономерно выше, поскольку нужно поддерживать две отдельные среды.
Именно поэтому единая production-среда в Canary обходится значительно дешевле — это более подходящий вариант для небольших команд или приложений с умеренными требованиями к ресурсам.
Масштабируемость и долгосрочная поддержка
Наконец, хотя Blue-Green можно масштабировать, поддержка двух полноценных сред для крупных приложений требует значительных ресурсов и усложняет инфраструктуру. Со временем управление дублирующимися средами создаёт ощутимые накладные расходы — особенно для приложений со сложной инфраструктурой.
Это делает сравнение Canary и Blue-Green по масштабируемости и сложности обслуживания достаточно очевидным. Canary проще масштабировать и это обходится дешевле, поскольку не требует дублирования сред.
Вместо этого масштабирование происходит внутри основной среды за счёт постепенного расширения аудитории, получающей новые изменения. Такой подход значительно проще поддерживать в долгосрочной перспективе: меньше инфраструктурной сложности и проще обслуживание.
Опыт Cloudzy: Blue-Green против Canary деплоя
Оказывая DevOps-услуги клиентам, мы понимаем, что удовлетворённость пользователей, высокая доступность и минимальный простой напрямую влияют на успех их бизнеса. В одном из проектов клиент обратился к нам с задачей масштабного обновления инфраструктуры. Команде предстояло выбрать между Blue-Green и Canary для развёртывания изменений в их системе.
После тщательного анализа мы решили начать с Blue-Green: этот подход обеспечивал практически нулевое время простоя. Мы подготовили идентичную green-среду и были готовы выкатить обновление. Напряжение было ощутимым — одно нажатие кнопки, и весь трафик переходит на green-среду. Разработчики знают: сколько бы ты ни тестировал, в таких ситуациях всегда остаётся элемент непредсказуемости.
К счастью, всё прошло отлично. Переход был абсолютно плавным, проблем почти не возникло. Со временем, по мере роста аудитории и сервисов клиента, появилась необходимость выкатывать новые функции, и дискуссия Blue-Green против Canary возобновилась.
Однако на этот раз особых споров не было. Речь шла о сравнительно небольших функциях — совершенно другой масштаб по сравнению с тем обновлением инфраструктуры. Мы выбрали Canary: он позволял раскатывать функции на небольшую часть аудитории клиента и оперативно устранять проблемы по мере поступления обратной связи.
Это решение оказалось верным. Серьёзных проблем не было, но начали всплывать мелкие, о которых сообщили 5% пользователей клиента, получивших доступ к новой функции.
В Cloudzy мы убеждены, что каждая задача требует индивидуального подхода. Нужна ли вашему бизнесу надёжность Blue-Green или гибкость Canary — у нашей DevOps-команды есть опыт и знания для реализации оптимальной стратегии под вашу инфраструктуру. Свяжитесь с нами здесь сегодня, чтобы узнать, как мы можем оптимизировать ваш процесс развёртывания и обеспечить стабильную работу ваших сервисов.
Что касается VPS, мы предлагаем одни из самых низких тарифов в отрасли VPS. В наше предложение входят: более 12 дата-центров по всему миру, выделенные интернет-каналы до 10 Gbps, хранилище NVMe SSD корпоративного класса, производительные процессоры AMD EPYC с турбочастотой 3.23 GHz и гарантированным аптаймом 99.95%. Подробнее — тарифы VPS на странице с тарифами.
Заключение
В конечном счёте, выбирая между Canary и Blue-Green, нельзя однозначно назвать один подход лучше другого. Всё зависит от конкретного случая использования и того, какой из них лучше соответствует вашим задачам.
Часто задаваемые вопросы
В чём принципиальная разница между Blue-Green и Canary деплоем?
Ключевое различие между Blue-Green и Canary заключается в способе выпуска обновлений. Blue-Green использует две идентичные среды: обновление применяется к неактивной, после чего происходит мгновенное переключение трафика с минимальным простоем. Canary работает иначе: обновление сначала получает небольшая группа пользователей, система мониторится на наличие проблем, и только после этого изменения постепенно раскатываются на всю аудиторию.
Какая стратегия лучше снижает простои: Blue-Green или Canary?
Blue-Green, как правило, лучше справляется с сокращением простоев за счёт мгновенного переключения между средами — это минимизирует любые перебои в работе. Canary тоже нацелен на минимизацию простоев, но делает это через постепенный rollout, при котором незначительные локальные проблемы могут затрагивать небольшую часть пользователей.
Как сравниваются затраты на Blue-Green и Canary деплой?
Blue-Green обычно обходится дороже, поскольку требует поддержки двух полноценных сред. Canary экономичнее: обновления раскатываются внутри основной среды без дублирования инфраструктуры, что делает его предпочтительным выбором для небольших команд или приложений с умеренными требованиями к ресурсам.