Стратегии развёртывания: версии, псевдонимы и перераспределение трафика
Бессерверные приложения с AWS Lambda
Claudio Canales
Senior DevOps Engineer
Почему важна стратегия развёртывания
Быстро обнаруживать ошибки.
Ограничивать масштаб сбоя.
Быстро восстанавливаться.
$LATEST и опубликованные версии
$LATEST
Обновляется при каждом изменении кода.
Версии
Неизменяемые снимки состояния.
Удобны для откатов и разделения трафика.
Версия — это неизменяемый снимок
Версии — это артефакты релиза.
Каждая фиксирует код и конфигурацию.
После публикации версия не изменяется.
Всегда можно вернуться к рабочему состоянию.
Псевдонимы — стабильные указатели
Стабильный указатель.
Вызывайте псевдоним вместо конкретной версии.
Переключайте цель псевдонима без изменения вызывающего кода.
Псевдонимы dev и prod
Удобны для окружений.
dev
обновляйте часто.
Продвигайте в
prod
, просто переключив псевдоним.
Перераспределение трафика с взвешенными псевдонимами
Безопасное тестирование в production.
Основная часть трафика идёт на текущую версию.
Небольшой процент направляется на кандидата.
Canary, шаг 1: 90/10
90% трафика остаётся на текущей версии.
10% тестирует кандидата под реальной нагрузкой.
Следите за ошибками и задержками.
Canary, шаг 2: 50/50
Если 10% выглядят хорошо, увеличьте вес.
50% — текущая, 50% — кандидат.
При разделении 50/50 проблемы проявляются быстро.
Мониторинг обязателен.
Canary, шаг 3: 100% новая
Весь трафик направляется на новую версию.
Старая версия по-прежнему доступна.
Откат выполняется легко.
Модель blue/green
Blue — текущая стабильная версия.
Green — новая версия-кандидат.
Переключение — перенос псевдонима.
Взвешенная маршрутизация делает переход плавным.
Откат = перенос псевдонима назад
Повторное развёртывание не требуется.
Переведите псевдоним на последнюю рабочую версию.
Восстановление занимает секунды, а не часы.
Неизменяемые версии и стабильные псевдонимы работают в связке.
Мониторинг во время переключения
Ошибки и тайм-ауты.
Продолжительность и хвостовые задержки.
Троттлинг при использовании лимитов.
Быстро приостанавливайте или откатывайтесь.
Типичная ошибка: $LATEST в роли prod
Использование $LATEST снижает предсказуемость.
Версии и псевдонимы показывают, что именно работает.
Откаты безопасны.
Ignore
Чеклист безопасного развёртывания
Опубликуйте версию.
Постепенно переводите трафик через псевдоним.
Отслеживайте результаты.
Держите откат наготове на каждом шаге.
Ключевые выводы
Версии обеспечивают предсказуемость.
Псевдонимы обеспечивают стабильность.
Взвешенная маршрутизация повышает надёжность.
Откат = перенос псевдонима.
Давайте потренируемся!
Бессерверные приложения с AWS Lambda
Preparing Video For Download...