Канареечное и линейное развёртывание

Автоматизация развёртывания на AWS

Dunieski Otano

Amazon Web Services Solutions Architect

Один неудачный релиз — все пользователи

разделение

  • Изменение логики платежей мгновенно развернулось на 100% трафика
  • Ошибка проявилась под реальной нагрузкой: не проходит ни один платёж
  • Канареечное развёртывание на 10% выявило бы проблему за пять минут
  • Цена отказа от canary-тестирования: реальные финансовые потери
Автоматизация развёртывания на AWS

Что такое канареечное развёртывание

канареечное развёртывание

  • Сначала направьте небольшую часть трафика на новую версию
  • Следите за метриками в течение фиксированного периода ожидания
  • Если всё в порядке, переключите остальной трафик сразу
  • Типичная схема: 10% на 5 минут, затем 100%
Автоматизация развёртывания на AWS

Что такое линейное развёртывание

линейное развёртывание

  • Переключайте трафик равными шагами
  • Делайте паузу между шагами
  • Пример: 10% каждую минуту в течение 10 минут
  • Более плавно, чем canary, но занимает больше времени
Автоматизация развёртывания на AWS

Canary и linear: сравнение

  • Canary: один срез, потом всё
  • Linear: много маленьких шагов
  • Canary быстро выявляет проблемы; linear нарастает постепенно
  • Оба останавливаются при запуске отката

трафик

Автоматизация развёртывания на AWS

Конфигурации CodeDeploy для Lambda

  • CodeDeployDefault.LambdaCanary10Percent5Minutes: 10% на 5 мин, затем 100%
  • CodeDeployDefault.LambdaLinear10PercentEvery1Minute: +10% каждую минуту
  • CodeDeployDefault.LambdaAllAtOnce: весь трафик сразу
  • У ECS есть аналогичные конфигурации с префиксом ECS

метка

Автоматизация развёртывания на AWS

Автоматический откат с аварийными сигналами CloudWatch

  • Подключите аварийные сигналы CloudWatch к группе развёртывания
  • Типичные сигналы: ошибки, длительность, 5xx
  • Если сигнал переходит в состояние ALARM, развёртывание останавливается
  • CodeDeploy откатывается к предыдущей версии

метка

Автоматизация развёртывания на AWS

Выбор подходящей конфигурации

выбор

  • Обычный патч с низким риском → AllAtOnce
  • Изменение с высоким риском в продакшене → Canary
  • Нужен плавный постепенный переход → Linear
  • Всегда сочетайте с аварийными сигналами для автооткатов
Автоматизация развёртывания на AWS

Давайте потренируемся!

Автоматизация развёртывания на AWS

Preparing Video For Download...