Робота з життєвим циклом події: повторні спроби, DLQ і призначення

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

Claudio Canales

Senior DevOps Engineer

Життєвий цикл події коротко

  • Lambda викликає ваш обробник.
  • Обробник або успішний, або завершується з помилкою.
  • Якщо є помилка, повтори та маршрутизація визначають подальші дії.

Схема життєвого циклу події

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

Два способи появи збоїв

Синхронно

  • Викликач чекає й отримує помилку у відповіді.

Асинхронно

  • Спочатку викликач отримує підтвердження.
  • Lambda повторює у фоновому режимі.
  • Обробка помилок залежить від режиму виклику.

Шляхи збоїв: синхр. vs асинхр.

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

Повторні спроби — це нормально

  • Повторні спроби — це часто перевага, а не вада.
  • Тимчасовий збій може зникнути на наступній спробі.
  • Повтори можуть спричиняти дублікати; обробник має це враховувати.

Аналогія з повторним набором

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

Повторні спроби з часом

  • Повтори допомагають відновитися після тимчасових проблем.
  • Але та сама подія може виконатися кілька разів.
  • Ідемпотентність і чітке оброблення помилок — критично важливі.

Шкала повторних спроб

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

Коли повтори небезпечні

  • Повтори ризиковані, якщо робота не є ідемпотентною.
  • Приклади: списання з картки, надсилання листа.
  • Використовуйте ідемпотентні ключі та безпечні оновлення, щоб дублікати не шкодили.

Мета ідемпотентності

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

DLQ (Dead-Letter Queue)

  • Безпечне місце для подій, що не вдалися навіть після повторів.
  • Часто це черга SQS — керована AWS черга повідомлень.
  • Перевірте вміст, виправте проблему й повторно відпрацюйте.

Аналогія DLQ: бюро знахідок

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

DLQ vs призначення (destinations)

Аналогія DLQ: бюро знахідок

  • Збирає збої після повторів.
  • Використовуйте для розслідування.

Схема маршрутизації Destinations

  • Маршрутизують результати успіху та помилки.
  • Будуйте явні шляхи успіху й відмови.
Безсерверні застосунки з AWS Lambda

Destinations: маршрути успіху й помилки

  • За успіху надсилайте результат до onSuccess.
  • За помилки надсилайте деталі до onFailure.
  • Так наступний крок стає явним.

Схема маршрутизації Destinations

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

Тонке налаштування політики повторів

  • Налаштуйте, скільки разів Lambda повторює.
  • Обмежте вік події, щоб не обробляти застарілі дані.
  • Більше повторів підвищує надійність, але збільшує дублікати й затримку.

Керування політикою повторів

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

Максимальний вік події: термін придатності

  • Максимальний вік події — це політика прострочення.
  • Надто стара подія може бути марною для обробки.
  • Компроміс: менше пізніх подій, більш своєчасна робота.

Аналогія з терміном придатності події

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

Спостережуваність: куди дивитися

  • Логи відповідають, що сталося.
  • Метрики показують, як часто це відбувається.
  • Сповіщення допомагають швидко виявляти сплески.

Логи vs метрики

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

Що робити зі збійними подіями

  • Перевірте вміст і помилку.
  • Усуньте першопричину.
  • Повторно відпрацюйте подію та відстежуйте помилки й пропускну здатність.

Цикл відновлення після збоїв подій

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

Головне

  • Надійність забезпечують повтори, маршрутизація та спостережуваність.
  • Синхронні помилки повертаються викликачеві.
  • Асинхронні потребують повторів плюс DLQ або призначень.
  • Так збої залишаються видимими.

Формула надійності

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

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

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

Preparing Video For Download...