Что такое Canary Deployment?

Ответ

Canary Deployment (канареечное развертывание) — это стратегия выкатки новой версии приложения, при которой трафик постепенно переключается с текущей стабильной версии на новую. Сначала новая версия становится доступна лишь небольшой группе пользователей (например, 1-5%), которая выступает в роли «канарейки в шахте».

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

Процесс развертывания:

  1. Развертывание: Новая версия (v2) разворачивается на серверах параллельно со старой (v1).
  2. Маршрутизация: Небольшая часть трафика (например, 10%) направляется на v2, а основная (90%) — на v1.
  3. Мониторинг: Собираются метрики (ошибки, задержки, использование ресурсов) для обеих версий.
  4. Принятие решения:
    • Успех: Доля трафика на v2 постепенно увеличивается до 100%. Старая версия v1 выводится из эксплуатации.
    • Неудача: Трафик полностью возвращается на v1, а v2 откатывается для анализа проблем.

Ключевые преимущества:

  • Минимизация рисков: Проблемы затрагивают лишь малую часть пользователей.
  • Быстрый откат: Возможность мгновенно вернуть весь трафик на стабильную версию.
  • Тестирование в реальных условиях: Проверка производительности и функциональности на реальном пользовательском трафике.

Эта стратегия часто реализуется с помощью балансировщиков нагрузки, Ingress-контроллеров в Kubernetes или Service Mesh (например, Istio, Linkerd).