Как деплоить приложение и не терять пользователей (стратегии развертывания zero downtime)

«Как деплоить приложение и не терять пользователей (стратегии развертывания zero downtime)» — вопрос из категории Архитектура и DevOps-практики, который задают на 23% собеседований Devops Инженер. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для zero downtime деплоя используйте стратегии:

Blue-Green Deployment

  • Разверните новую версию (Green) параллельно с текущей (Blue)
  • Переключите трафик (например, через LB) после тестирования
  • Пример с AWS ALB:
aws alb modify-listener --listener-arn arn:aws:elasticloadbalancing... --default-actions Type=forward,TargetGroupArn=green-tg-arn

Canary Releases

  • Постепенно направляйте часть трафика (5% → 50% → 100%)
  • Инструменты: Istio, Nginx, Flagger

Rolling Updates (Kubernetes)

  • Постепенная замена подов с контролем health checks:
strategy:
  type: RollingUpdate
  rollingUpdate:
    maxUnavailable: 25%
    maxSurge: 1

Feature Flags

  • Включайте фичи для части пользователей через конфиги

Обязательно:

  • Автоматические откаты при ошибках
  • Мониторинг метрик (5xx, latency) во время деплоя
  • Тестирование в staging, схожем с prod