hostprofi.ru
Подобрать хостинг
Термин·буква C

Canary деплой

краткое определение

Canary деплой — стратегия постепенного выпуска обновлений: новая версия сначала получает малый процент трафика (1–5%), при успехе — увеличивается до 100%. Позволяет обнаружить проблемы до полного выпуска. Реализуется через балансировщик нагрузки, Kubernetes Deployment или Feature Flags.

Canary deploy (от канарейки в шахте — ранний индикатор опасности) — паттерн деплоя, при котором новая версия приложения постепенно получает реальный трафик. Начинают с 1–5% пользователей, наблюдают за метриками (ошибки, latency), и только при стабильности расширяют до 100%.

Стратегии деплоя

  • Rolling Update — постепенно заменяет старые Pod-ы новыми. Kubernetes default.
  • Blue-Green — два окружения, переключение трафика одним действием. Быстрый rollback.
  • Canary — часть трафика → новая версия, остальное → старая. Минимальный риск.
  • Shadow — новая версия получает копию трафика без реального влияния на пользователей.

Canary в Kubernetes

# Два Deployment: старый (90%) и canary (10%)
# Через Ingress с weight аннотациями (Nginx Ingress):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myapp-canary
  annotations:
    nginx.ingress.kubernetes.io/canary: "true"
    nginx.ingress.kubernetes.io/canary-weight: "10"
spec:
  rules:
  - host: myapp.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: myapp-canary
            port: { number: 80 }

Feature Flags

Feature flags (флаги функциональности) — альтернатива canary на уровне кода: новая функция включается только для определённых пользователей. Инструменты: LaunchDarkly, Unleash (open-source), PostHog.

История

Название «canary deploy» происходит от практики использования канареек в угольных шахтах — птицы умирали раньше людей при утечке газа. Google popularized canary deploy в книге «Site Reliability Engineering» (2016). Netflix реализует canary через Spinnaker. Argo Rollouts — 2020.

Связь с хостингом

Canary деплой на VDS без Kubernetes: два сервера за балансировщиком с разными weights. На Kubernetes — через Nginx Ingress canary аннотации или Argo Rollouts. Позволяет тестировать обновления на реальном трафике с минимальным риском.

История Canary Deploy

Термин «canary deployment» происходит от практики шахтёров XIX века — канарейку в клетке опускали в шахту для обнаружения опасных газов. В программной инженерии метод описан Google в 2013 году в контексте деплоев Chrome и Google Search. Аналогичные методы: Blue-Green Deploy (Martin Fowler, 2010), Feature Flags (FlagSmith, LaunchDarkly), Progressive Delivery (Jez Humble). Netflix использует Canary deploy для всех продакшн-релизов с 2011 года.

Canary vs Blue-Green vs Rolling Update

СтратегияТрафикОткатСложность
Canary% на новую версиюбыстрый (уменьшить %)средняя
Blue-Greenпереключение 0%/100%мгновенныйвысокая (2x серверов)
Rolling Updateпостепенная замена нодмедленныйнизкая
Feature Flagпо пользователюмгновенныйвысокая (код)

Практическая реализация на хостинге

В Kubernetes canary deploy реализуется через два Deployment с разными метками и Service, разделяющим трафик через Ingress (Nginx Ingress: nginx.ingress.kubernetes.io/canary: "true"). В Nginx на VPS можно разделить трафик через split_clients модуль. Метрики обязательны: алерты на error rate и latency сигнализируют о проблемах новой версии.

Другие термины