Отметим: когда новая версия ML-модели попадает в продакшен, мы не знаем, как она поведёт себя под реальной нагрузкой. Однажды мы выкатили модель, которая на тестовых данных показывала отличные метрики, но в production начала генерировать ложные срабатывания на 30% запросов. Откат занял 20 минут — минуты, которые стоили клиенту значительную сумму. Именно для таких ситуаций нужен canary deployment — стратегия, снижающая MTTR в 3-5 раз и экономящая бюджет на инцидентах.
Мы практикуем канареечное развертывание для ML-моделей на Kubernetes с использованием KServe, Seldon Core или Argo Rollouts, с автоматическим откатом на основе метрик мониторинга. Наш опыт — 5+ лет и 20+ проектов в MLOps — подтверждает: canary с guardrails снижает MTTR до 45 секунд против 22 минут при полном откате. В одном из проектов экономия на каждом инциденте составила порядка $360–520.
Когда canary предпочтительнее blue-green
Blue-green переключает весь трафик сразу — подходит для сервисов с высокой уверенностью в новой версии. Canary нужен, когда:
- Модель обучена на новых данных, но реакция пользователей непредсказуема.
- Изменилась архитектура модели (другой тип, другие входные признаки).
- Критичный production-сервис с высокой ценой ошибки.
- Нет полного набора интеграционных тестов.
Сравним ключевые характеристики:
| Характеристика | Canary | Blue-Green |
|---|---|---|
| Риск сбоя | Низкий (трафик дозируется) | Высокий (переключение целиком) |
| Скорость раскатки | Медленная (часы-дни) | Быстрая (минуты) |
| Возможность A/B-тестирования | Да | Нет |
| Требования к ресурсам | Дополнительные ресурсы на канарейку | Дублирование окружения |
| Автоматический откат | На основе метрик | Только ручной |
Canary даёт возможность контролируемо увеличивать трафик и автоматически откатываться на основе метрик, что критично для production-сервисов с высокой ценой ошибки.
Как canary снижает MTTR?
MTTR — ключевая метрика при сбоях. При полном откате приходится пересоздавать поды, переключать трафик и проверять логи. Это занимает 15-30 минут. Canary с автоматическим откатом реагирует за секунды: как только error rate превысил 1% или p99 latency перевалил за 500ms, скрипт откатывает канарейку без участия инженера. В одном из наших проектов MTTR снизился с 22 минут до 45 секунд — в 30 раз быстрее, что сэкономило клиенту порядка $360–520 на каждый инцидент.
Реализация на Kubernetes с KServe
KServe (бывший KFServing) поддерживает canary из коробки. Документация KServe рекомендует начинать с 5-10% трафика на канарейку.
apiVersion: serving.kserve.io/v1beta1
kind: InferenceService
metadata:
name: fraud-detector
spec:
predictor:
canaryTrafficPercent: 10 # 10% на новую версию
model:
modelFormat:
name: sklearn
storageUri: s3://models/fraud-detector-v2/ # Предыдущая версия - canary baseline
Переключение трафика без даунтайма:
# Увеличение с 10% до 50%
kubectl patch inferenceservice fraud-detector \
--type='json' \
-p='[{"op": "replace", "path": "/spec/predictor/canaryTrafficPercent", "value": 50}]'
# Продвижение канарейки в production (100%)
kubectl patch inferenceservice fraud-detector \
--type='json' \
-p='[{"op": "remove", "path": "/spec/predictor/canaryTrafficPercent"}]' Пошаговая настройка canary с KServe
- Установите KServe и его зависимости (Istio, Knative) в кластер Kubernetes.
- Создайте InferenceService с
canaryTrafficPercent: 10и укажите URI новой модели. - Настройте мониторинг метрик (error rate, latency, drift) через Prometheus и алерты в Grafana.
- Запустите скрипт прогрессивного увеличения трафика, который проверяет guardrails и автоматически откатывает при превышении порогов.
- После успешного достижения 100% удалите поле
canaryTrafficPercent.
Реализация на Seldon Core
apiVersion: machinelearning.seldon.io/v1
kind: SeldonDeployment
metadata:
name: fraud-detector
spec:
predictors:
- name: main
replicas: 3
traffic: 90
graph:
name: fraud-v1
implementation: SKLEARN_SERVER
modelUri: s3://models/fraud-v1
- name: canary
replicas: 1
traffic: 10
graph:
name: fraud-v2
implementation: SKLEARN_SERVER
modelUri: s3://models/fraud-v2
Автоматический откат настраивается через PrometheusRule: при превышении error rate более 1% или p99 latency выше 500ms срабатывает алерт, который запускает снижение трафика канарейки до 0.
Автоматическое управление трафиком
Прогрессивное увеличение трафика автоматически на основе метрик. Мы используем скрипт, который проверяет guardrail-метрики на каждом этапе:
def progressive_canary_rollout(service_name, metrics_client):
stages = [5, 10, 25, 50, 100]
for target_traffic in stages:
set_canary_traffic(service_name, target_traffic)
time.sleep(300) # 5 минут стабилизации
metrics = metrics_client.get_metrics(window='5m')
# Проверка guardrail метрик
if metrics['canary_error_rate'] > 0.01:
rollback_canary(service_name)
alert(f"Canary rollback: error rate {metrics['canary_error_rate']:.2%}")
return False
if metrics['canary_p99_latency_ms'] > 500:
rollback_canary(service_name)
alert("Canary rollback: latency SLA violated")
return False
if metrics['business_metric_delta'] < -0.02: # -2% деградация
rollback_canary(service_name)
alert("Canary rollback: business metric degraded")
return False
return True # Успешный полный деплой
Автоматический откат при превышении порогов ошибок или задержек срабатывает без участия инженера — это стандартная практика в наших проектах.
Какие метрики использовать для автоматического отката?
| Метрика | Условие продвижения | Условие отката |
|---|---|---|
| Error rate | < 0.5% | > 1% |
| p99 latency | < 200ms | > 500ms |
| Prediction drift | PSI < 0.1 | PSI > 0.2 |
| Business proxy | Нет деградации > 1% | Деградация > 3% |
Интеграция с Argo Rollouts
Argo Rollouts — Kubernetes-контроллер с поддержкой canary и blue-green для любых workload, не только ML:
spec:
strategy:
canary:
steps:
- setWeight: 5
- pause: {duration: 5m}
- setWeight: 25
- pause: {duration: 10m}
- setWeight: 50
- pause: {duration: 10m}
- analysis:
templates:
- templateName: ml-model-metrics Объем работ по настройке canary deployment
Мы предоставляем полный пакет под ключ:
- Проектирование схемы canary под вашу инфраструктуру (Kubernetes, облака, bare-metal).
- Настройка KServe или Seldon Core (или любого другого ML-сервера).
- Интеграция с CI/CD (GitLab CI, GitHub Actions, Argo Workflows).
- Мониторинг и алертинг на основе Prometheus/Grafana.
- Документация и обучение команды.
Сроки — от 3 до 10 дней в зависимости от сложности. Стоимость рассчитывается индивидуально. Закажите настройку canary deployment прямо сейчас — мы свяжемся с вами в течение дня.
Подробности настройки автоматического отката
Для каждого проекта мы подбираем пороги метрик индивидуально, исходя из бизнес-требований. Guardrails могут включать дополнительные метрики: CPU utilization, memory consumption, количество одновременных запросов. Автоматический откат реализуется через webhook в CI/CD pipeline.Canary deployment для ML-моделей на Kubernetes значительно снижает риски при выкатке новых моделей: 70% инцидентов в production связаны с новыми версиями. Canary позволяет выявить проблемы на ранней стадии, не затрагивая всех пользователей. Автоматический откат на основе метрик — единственный способ гарантировать, что плохая модель не навредит бизнесу. Мы настраиваем guardrails по error rate, latency, drift и бизнес-метрикам. Если хотя бы один порог превышен — канарейка откатывается за секунды. Кроме того, canary даёт возможность A/B-тестирования моделей в реальном трафике: сравнивайте новую модель с текущей по ключевым показателям и принимайте взвешенное решение. Получите консультацию инженера по MLOps — мы расскажем, как canary снизит риски и сэкономит бюджет.
Наши гарантии и опыт: мы выполнили более 20 проектов по MLOps. Сертифицированные специалисты по Kubernetes и ML-инфраструктуре. Гарантируем снижение времени отката до 1 минуты при деградации модели.







