Термин · Глоссарий B2B-ПО

Канарское тестирование (Canary Testing)

Канарское тестирование (Canary Testing) – стратегия постепенного выкатывания новой версии программного обеспечения, при которой обновление сначала направляется малому проценту пользователей или серверов. Мониторинг ключевых метрик в этой группе позволяет выявить деградацию до полного развёртывания. Название отсылает к практике использования канареек в шахтах как индикаторов опасных газов.

Буква «К» В категориях: 4 Платформ: 6+

Концепция и происхождение термина

Канарское тестирование (Canary Testing, Canary Release, Canary Deployment) – техника постепенного выкатывания (progressive delivery) новых версий программного обеспечения, при которой изменения сначала получает только небольшой сегмент пользователей или инфраструктуры, а не все сразу. Название происходит от практики горняков XIX века использовать клетки с канарейками в угольных шахтах: птица значительно чувствительнее к угарному газу, чем человек, и её гибель служила ранним предупреждением об опасности.

В контексте ИТ канарейка – это первая группа пользователей или серверов, получающая новую версию. Если метрики этой группы деградируют (рост ошибок, увеличение задержки, падение конверсии), выкатывание прекращается и выполняется откат; если метрики в норме – процент пользователей постепенно увеличивается до 100%.

Процесс канарского выкатывания

Типичный процесс канарского развёртывания включает следующие шаги:

  • Подготовка: новая версия (canary) и текущая стабильная (stable) сосуществуют в production-среде;
  • Начальное развёртывание: 1–5% трафика или серверов переключается на canary-версию. Выбор может быть случайным или детерминированным (определённые регионы, типы устройств, внутренние пользователи);
  • Мониторинг: в течение нескольких минут – часов наблюдаются ключевые метрики: error rate, latency p95/p99, throughput, бизнес-метрики (конверсия, RPM);
  • Принятие решения: автоматическое или ручное – продолжить развёртывание (расширить процент) или откатиться (rollback);
  • Постепенное расширение: 5% → 25% → 50% → 100%, с паузами для оценки на каждом этапе;
  • Завершение: устаревшая версия выводится из эксплуатации.

Различие с Blue-Green Deployment и Feature Flags

Канарское тестирование часто сравнивают с другими стратегиями развёртывания:

  • Blue-Green Deployment: два идентичных production-окружения (blue – текущее, green – новое). Переключение происходит мгновенно для 100% трафика через балансировщик нагрузки. Нет постепенности, но обеспечивает мгновенный полный откат. Требует двойных ресурсов инфраструктуры;
  • Rolling Deployment: серверы обновляются последовательно по одному (или группами). Нет разделения по пользователям; все пользователи видят новую версию по мере обновления узлов;
  • Feature Flags (Feature Toggles): функциональность включается/выключается через конфигурацию без переразвёртывания. Canary управляет версией ПО на инфраструктуре; feature flags управляют видимостью функций на уровне кода. Оба подхода дополняют друг друга: canary ограничивает версию, feature flags – функцию.

Маршрутизация трафика в канарском тестировании

Для разделения трафика между canary и stable используются различные механизмы:

  • Случайное разделение по весам: балансировщик (Nginx, HAProxy, Istio, Envoy) направляет X% запросов на canary-подов;
  • Cookie-based routing: пользователь, попавший в canary, получает cookie; все его последующие запросы идут на canary для обеспечения sticky sessions;
  • Header-based routing: запросы с определённым HTTP-заголовком (например, X-Canary: true) маршрутизируются на canary – удобно для internal tester;
  • Geography-based: трафик из определённого региона или датацентра направляется на canary;
  • User cohort: на основе user ID или атрибутов пользователя (план подписки, регистрация до/после определённой даты).

Инструменты и платформы для Canary Deployment

Канарское развёртывание реализуется на нескольких уровнях:

  • Kubernetes + Argo Rollouts: контроллер Argo Rollouts реализует нативные canary/blue-green стратегии для Kubernetes, управляя разделением трафика через Service Mesh (Istio, Linkerd) или Ingress Controller;
  • Flagger: оператор Kubernetes, автоматизирующий canary-анализ на основе метрик Prometheus, Datadog, CloudWatch;
  • Spinnaker: пайплайн CD-платформа Netflix с поддержкой canary-анализа (Automated Canary Analysis, ACA);
  • AWS CodeDeploy: поддерживает canary и linear deployment для Lambda и EC2;
  • GitLab CI/CD, GitHub Actions: настройка canary через Kubernetes deployments непосредственно из CI/CD пайплайна.

Канарское тестирование и SRE-практики

Канарское развёртывание является ключевым инструментом Site Reliability Engineering (SRE) для снижения риска изменений в production. В сочетании с Error Budget (бюджетом ошибок) SLO/SLI canary позволяет формализовать порог автоматического отката: если error rate canary превышает установленный порог (например, 0,5%) – система автоматически откатывается без участия человека. Такой подход называется Automated Canary Analysis (ACA) и является частью практики Continuous Delivery.

Понятия из глоссария Цифрового маркетплейса, которые часто встречаются вместе с термином «Канарское тестирование».

Платформы класса «Канарское тестирование»

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

MO

Moon

Разработка ПО
Moon - platforma avtomatizirovannogo testirovaniya veb-prilozheniy v nastol'nykh i mobil'nykh brauzerakh po pr...
Цена по запросу
★ 4.2
Подробнее →
PV

Platform V Works::TestCulture

Тест-менеджмент
Platform V Works::TestCulture — многофункциональный инструмент от СберТех для управления тестовыми сценариями,...
Цена по запросу
Подробнее →
Подсистема тестирования
Цена по запросу
Подробнее →
Онколинк

Онколинк

Разработка ПО
Платформа для управления онкологическими пациентами и координации медицинского обслуживания. Входит в Единый р...
Цена по запросу
Подробнее →
Модуль обмена C3D Converter

Модуль обмена C3D Converter

Разработка ПО
Модуль обмена C3D Converter отвечает за чтение и запись 3D-моделей в файлах нейтральных форматов и в собственн...
Цена по запросу
Подробнее →

Категории каталога

Разделы каталога Цифрового маркетплейса, в которые входят решения, использующие «Канарское тестирование».

Где применяется

Отрасли, в которых «Канарское тестирование» используется на практике. Откройте отраслевой раздел Цифрового маркетплейса, чтобы увидеть подходящие решения, кейсы и новости.

Частые вопросы про Канарское тестирование

Почему техника называется «канарской»?

Название отсылает к практике горняков использовать канареек в угольных шахтах как биологических датчиков угарного газа. Птица гибла раньше, чем газ достигал концентрации, опасной для людей, предупреждая горняков. Аналогично canary-группа пользователей «первой сталкивается» с проблемами новой версии до её массового выкатывания.

Чем канарское развёртывание лучше обычного?

При обычном (big-bang) развёртывании все пользователи одновременно получают новую версию – любой баг затрагивает 100% аудитории. Canary ограничивает взрывной радиус (blast radius): в худшем случае проблема затронет 1–5% пользователей, пока не будет обнаружена и устранена через откат.

Как выбрать размер canary-группы?

Оптимальный размер зависит от объёма трафика и критичности сервиса. Для высоконагруженных сервисов достаточно 1% для получения статистически значимой выборки за минуты. Для низконагруженных – 10–20% с более длительным периодом наблюдения. Начальный процент также определяется допустимым риском.

Что такое Automated Canary Analysis?

ACA – автоматическое принятие решения о продолжении или откате развёртывания на основе статистического сравнения метрик canary и baseline. Инструменты (Argo Rollouts + Prometheus, Spinnaker Kayenta) сравнивают распределения latency, error rate, business metrics и автоматически принимают/отклоняют canary без участия инженера.

Нужен ли feature flag при canary?

Не обязательно, но вместе они дают больше контроля. Canary развёртывает новую версию кода на подмножество инфраструктуры. Feature flag управляет видимостью функций независимо от версии кода. Сочетание позволяет, например, выкатить код всем, но включить функцию только 10% пользователей.