Стратегії розгортання: версії, псевдоніми та поетапне переключення трафіку

Безсерверні застосунки з AWS Lambda

Claudio Canales

Senior DevOps Engineer

Чому стратегія розгортання важлива

  • Швидко виявляйте баги.
  • Обмежуйте зону впливу.
  • Швидко відновлюйтеся.

Ризиковане vs безпечне розгортання

Безсерверні застосунки з AWS Lambda

$LATEST vs опубліковані версії

$LATEST

  • Зміщується щоразу, коли ви оновлюєте код.

Версії

  • Незмінні знімки.
  • Зручно фіксувати для відкатів і розподілу трафіку.

Latest vs versions

Безсерверні застосунки з AWS Lambda

Версія — це незмінний знімок

  • Сприймайте версії як релізні артефакти.
  • Кожна містить код і конфігурацію.
  • Після публікації не змінюється.
  • Завжди можна повернутися до відомо стабільного стану.

Незмінний знімок версії

Безсерверні застосунки з AWS Lambda

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

  • Стабільний вказівник.
  • Викликайте псевдонім замість версії.
  • Оновлюйте ціль без змін у викликах.

Псевдонім вказує на версію

Безсерверні застосунки з AWS Lambda

Псевдоніми для dev і prod

  • Ідеально для середовищ.
  • Часто переміщуйте dev.
  • Підвищуйте до prod, просто змістивши псевдонім.

Відповідність псевдонімів dev і prod

Безсерверні застосунки з AWS Lambda

Переключення трафіку за ваговими псевдонімами

  • Безпечно тестуйте в проді.
  • Більшість трафіку лишається на поточній версії.
  • Малий відсоток іде на кандидатну.

Маршрутизація за вагами: концепт

Безсерверні застосунки з AWS Lambda

Крок канарейки 1: 90/10

  • 90% лишається на поточній версії.
  • 10% тестує кандидата під реальною нагрузкою.
  • Стежте за помилками та затримками.

Канарейковий поділ 90/10

Безсерверні застосунки з AWS Lambda

Крок канарейки 2: 50/50

  • Якщо 10% виглядає добре, збільшуйте вагу.
  • 50% поточна, 50% кандидат.
  • На 50/50 проблеми проявляються швидко.
  • Моніторинг критично важливий.

Канарейковий поділ 50/50

Безсерверні застосунки з AWS Lambda

Крок канарейки 3: 100% нова

  • Скеруйте весь трафік на нову версію.
  • Стара версія лишається доступною.
  • Відкат простий.

Канарейка: 100% нова

Безсерверні застосунки з AWS Lambda

Ментальна модель blue/green

  • Blue = поточна стабільна версія.
  • Green = нова кандидатна версія.
  • Перемикайте, зміщуючи псевдонім.
  • Вагова маршрутизація робить перехід поступовим.

Перемикання blue/green

Безсерверні застосунки з AWS Lambda

Відкат = повернути псевдонім назад

  • Перерозгортання не потрібне.
  • Перемістіть псевдонім на останню стабільну версію.
  • Відновлення за секунди, не години.
  • Незмінні версії та стабільні псевдоніми працюють разом.

Відкат шляхом повернення псевдоніма

Безсерверні застосунки з AWS Lambda

Моніторинг під час переключення

  • Помилки та тайм-аути.
  • Тривалість і хвостова латентність.
  • Тротлінг, якщо є ліміти.
  • Швидко ставте на паузу або відкатуйте.

Метрики моніторингу під час розгортання

Безсерверні застосунки з AWS Lambda

Поширена помилка: вважати $LATEST продом

  • Покладання на $LATEST знижує передбачуваність.
  • Версії та псевдоніми показують, що саме працює.
  • Відкати безпечні.

Попередження про дрейф latest

Безсерверні застосунки з AWS Lambda

Ігноруйте

Безсерверні застосунки з AWS Lambda

Чекліст безпечного розгортання

  • Опублікуйте версію.
  • Поступово зміщуйте трафік псевдонімом.
  • Моніторте результати.
  • Тримайте відкат напоготові на кожному кроці.

Чекліст безпечного розгортання

Безсерверні застосунки з AWS Lambda

Основні висновки

  • Версії дають передбачуваність.
  • Псевдоніми дають стабільність.
  • Вагова маршрутизація додає безпеки.
  • Відкат = перемістити псевдонім.

Основні висновки щодо розгортання

Безсерверні застосунки з AWS Lambda

Давайте потренуємось!

Безсерверні застосунки з AWS Lambda

Preparing Video For Download...