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

Розроблення застосунків на AWS

Ricardo Sueiras

Principal Technologist

Що таке подія?

 

події проти повідомлень

  • Повідомлення — це одиниця роботи між компонентами.
  • Подія фіксує, що вже сталося.
  • Сервіси обмінюються, публікуючи події.
  • Інші сервіси реагують на них незалежно.
  • Розв'язування зменшує залежності й підвищує масштабованість.
Розроблення застосунків на AWS

Виробники подій

 

виробники подій

  • Виробники створюють і публікують події, коли стаються дії.
  • Події можуть генерувати як служби AWS, так і власні застосунки.
  • Приклад: завантаження файла до Amazon S3.
  • Тоді Amazon S3 надсилає подію про створення об'єкта.
Розроблення застосунків на AWS

Споживачі подій

 

споживачі

  • Споживачі отримують і обробляють події асинхронно.
  • Джерела подій мають різні моделі доставки.
  • Push: події доставляються негайно.
  • Poll: споживачі забирають події під час опитування.
Розроблення застосунків на AWS

Відповідність джерела подій

  • AWS Lambda — типовий споживач подій.
  • Вона опитує джерела й автоматично отримує пакети записів.

 

відповідність джерела подій

Розроблення застосунків на AWS

Тонке налаштування відповідностей джерел подій Lambda

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

 

відповідність джерела подій

Розроблення застосунків на AWS

Amazon EventBridge

  • EventBridge маршрутизує події між сервісами й застосунками.
  • Дає динамічну маршрутизацію без тісного зв'язування сервісів.
  • Застосунки публікують свої події до EventBridge.
  • Правила визначають, які цілі отримають подію.

 

event bridge

Розроблення застосунків на AWS

Можливості EventBridge

 

можливості

  • EventBridge має кілька можливостей маршрутизації.
  • Правила розсилають одну подію на багато цілей.
  • Заплановані правила замінюють cron-сервери.
  • Розклади підтримують вирази rate(), at() і cron().
  • Pipes забезпечують «точка-точка» інтеграцію.
  • Pipes також дають фільтрацію й трансформацію.
Розроблення застосунків на AWS

Шини подій

 

шина подій

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

Виявлення схем

 

схема подій і реєстр

  • Виробники й споживачі часто розвиваються незалежно.
  • Розуміння структури подій є критичним.
  • Виявлення схем фіксує структуру вхідних подій.
  • Використовуйте це, щоб переглядати корисні навантаження подій.
  • Використовуйте це для валідації інтеграцій.
  • Використовуйте це для генерації прив'язок для підтримуваних мов.
Розроблення застосунків на AWS

Реєстр схем

  • Реєстр схем зберігає ваші схеми подій.
  • Він допомагає розробникам зрозуміти структуру й згенерувати прив'язки.

 

схема подій і реєстр

Розроблення застосунків на AWS

Фільтрування подій

  • Фільтрування зменшує зайву обробку.
  • Задавайте збіги шаблонами подій JSON.
  • Шаблони відбирають лише потрібні події.
  • Нижчі системи тоді обробляють лише релевантні події.

 

фільтрування подій

Розроблення застосунків на AWS

Упорядкування подій

  • Порядок подій не завжди гарантований.
  • Деякі сервіси можуть обробляти їх не по черзі.
  • Використовуйте контроль порядку, щоб явно забезпечити послідовність.

 

упорядкування подій

Розроблення застосунків на AWS

Архівування та відтворення подій

 

архівування й відтворення

  • EventBridge може архівувати й згодом відтворювати події.
  • Відтворюйте події, щоб відновитися після збоїв.
  • Відтворюйте події для тестування нових споживачів.
  • Відтворюйте події, щоб перебудувати нижчі системи.
Розроблення застосунків на AWS

Обробка помилок

 

обробка помилок

  • Застосунки на подіях мають безпечно обробляти помилки.
  • Збої включають дублікати подій.
    • Невдала обробка.
    • Недоступні споживачі.
  • Проєктуйте споживачів ідемпотентними, де можливо.
Розроблення застосунків на AWS

DLQ та напрямки (destinations)

 

обробка помилок

  • Використовуйте DLQ, щоб ізолювати події з постійними збоями.
  • В EventBridge DLQ налаштовуються для цілі правила, а не для функції.
  • Lambda Destinations розширюють таку маршрутизацію.
  • Destinations спрямовують і успіх, і помилки.
Розроблення застосунків на AWS

Тестування й валідація подій

  • Тестування застосунків на подіях перевіряє маршрутизацію.
  • Також перевіряє фільтрування подій.
  • Також перевіряє повтори подій.
  • Підтверджує обробку в розподілених системах.
  • Використовуйте AWS SAM для створення зразків тестових подій.
  • Зразки відтворюють точний JSON-вивід.

 

тестування

Розроблення застосунків на AWS

Що тестувати

  • SAM дає змогу тестувати локально до розгортання.
  • Перевірте відповідність шаблону подій.
  • Перевірте поведінку повторів.
  • Перевірте сценарії обмеження (throttling).
  • Перевірте доставку дублікатів подій.
  • Перевірте ідемпотентність споживачів.

 

тестування

Розроблення застосунків на AWS

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

Розроблення застосунків на AWS

Preparing Video For Download...