Стратегии развёртывания: версии, псевдонимы и перераспределение трафика

Бессерверные приложения с AWS Lambda

Claudio Canales

Senior DevOps Engineer

Почему важна стратегия развёртывания

  • Быстро обнаруживать ошибки.
  • Ограничивать масштаб сбоя.
  • Быстро восстанавливаться.

Рискованное и безопасное развёртывание

Бессерверные приложения с AWS Lambda

$LATEST и опубликованные версии

$LATEST

  • Обновляется при каждом изменении кода.

Версии

  • Неизменяемые снимки состояния.
  • Удобны для откатов и разделения трафика.

$LATEST и версии

Бессерверные приложения с AWS Lambda

Версия — это неизменяемый снимок

  • Версии — это артефакты релиза.
  • Каждая фиксирует код и конфигурацию.
  • После публикации версия не изменяется.
  • Всегда можно вернуться к рабочему состоянию.

Неизменяемый снимок версии

Бессерверные приложения с AWS Lambda

Псевдонимы — стабильные указатели

  • Стабильный указатель.
  • Вызывайте псевдоним вместо конкретной версии.
  • Переключайте цель псевдонима без изменения вызывающего кода.

Псевдоним указывает на версию

Бессерверные приложения с AWS Lambda

Псевдонимы dev и prod

  • Удобны для окружений.
  • dev обновляйте часто.
  • Продвигайте в prod, просто переключив псевдоним.

Маппинг псевдонимов dev и prod

Бессерверные приложения с AWS Lambda

Перераспределение трафика с взвешенными псевдонимами

  • Безопасное тестирование в production.
  • Основная часть трафика идёт на текущую версию.
  • Небольшой процент направляется на кандидата.

Концепция взвешенной маршрутизации

Бессерверные приложения с AWS Lambda

Canary, шаг 1: 90/10

  • 90% трафика остаётся на текущей версии.
  • 10% тестирует кандидата под реальной нагрузкой.
  • Следите за ошибками и задержками.

Canary: разделение 90/10

Бессерверные приложения с AWS Lambda

Canary, шаг 2: 50/50

  • Если 10% выглядят хорошо, увеличьте вес.
  • 50% — текущая, 50% — кандидат.
  • При разделении 50/50 проблемы проявляются быстро.
  • Мониторинг обязателен.

Canary: разделение 50/50

Бессерверные приложения с AWS Lambda

Canary, шаг 3: 100% новая

  • Весь трафик направляется на новую версию.
  • Старая версия по-прежнему доступна.
  • Откат выполняется легко.

Canary: 100% на новую версию

Бессерверные приложения с AWS Lambda

Модель blue/green

  • Blue — текущая стабильная версия.
  • Green — новая версия-кандидат.
  • Переключение — перенос псевдонима.
  • Взвешенная маршрутизация делает переход плавным.

Переключение blue/green

Бессерверные приложения с AWS Lambda

Откат = перенос псевдонима назад

  • Повторное развёртывание не требуется.
  • Переведите псевдоним на последнюю рабочую версию.
  • Восстановление занимает секунды, а не часы.
  • Неизменяемые версии и стабильные псевдонимы работают в связке.

Откат переносом псевдонима

Бессерверные приложения с AWS Lambda

Мониторинг во время переключения

  • Ошибки и тайм-ауты.
  • Продолжительность и хвостовые задержки.
  • Троттлинг при использовании лимитов.
  • Быстро приостанавливайте или откатывайтесь.

Метрики мониторинга при развёртывании

Бессерверные приложения с AWS Lambda

Типичная ошибка: $LATEST в роли prod

  • Использование $LATEST снижает предсказуемость.
  • Версии и псевдонимы показывают, что именно работает.
  • Откаты безопасны.

Предупреждение о дрейфе $LATEST

Бессерверные приложения с AWS Lambda

Ignore

Бессерверные приложения с AWS Lambda

Чеклист безопасного развёртывания

  • Опубликуйте версию.
  • Постепенно переводите трафик через псевдоним.
  • Отслеживайте результаты.
  • Держите откат наготове на каждом шаге.

Чеклист безопасного развёртывания

Бессерверные приложения с AWS Lambda

Ключевые выводы

  • Версии обеспечивают предсказуемость.
  • Псевдонимы обеспечивают стабильность.
  • Взвешенная маршрутизация повышает надёжность.
  • Откат = перенос псевдонима.

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

Бессерверные приложения с AWS Lambda

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

Бессерверные приложения с AWS Lambda

Preparing Video For Download...