Событийно-ориентированные приложения

Разработка приложений на AWS

Ricardo Sueiras

Principal Technologist

Что такое событие?

 

event-vs-messages

  • Сообщение — единица работы, передаваемая между компонентами.
  • Событие фиксирует то, что уже произошло.
  • Сервисы взаимодействуют, публикуя события.
  • Другие сервисы реагируют на эти события независимо.
  • Слабая связанность снижает зависимости и повышает масштабируемость.
Разработка приложений на AWS

Производители событий

 

event producers

  • Производители создают и публикуют события при возникновении действий.
  • Источником событий могут быть как сервисы AWS, так и пользовательские приложения.
  • Пример: загрузка файла в Amazon S3.
  • Amazon S3 генерирует событие о создании объекта.
Разработка приложений на AWS

Потребители событий

 

consumers

  • Потребители получают и обрабатывают события асинхронно.
  • Источники событий используют разные модели доставки.
  • Push-модель: события доставляются немедленно.
  • Poll-модель: потребители извлекают события при опросе.
Разработка приложений на AWS

Сопоставление источников событий

  • AWS Lambda — распространённый потребитель событий.
  • Она автоматически опрашивает источники и извлекает пакеты записей.

 

event source mapping

Разработка приложений на AWS

Настройка сопоставления источников событий Lambda

  • Настраивайте сопоставление источников событий для повышения пропускной способности.
  • Задайте размер пакета, чтобы управлять числом записей на вызов.
  • Настройте параметры повторных попыток для сбойных записей.
  • Используйте частичные ответы пакета на поддерживаемых источниках.
  • ReportBatchItemFailures исключает повторную обработку успешных записей.

 

event source mapping

Разработка приложений на AWS

Amazon EventBridge

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

 

event bridge

Разработка приложений на AWS

Возможности EventBridge

 

capabilities

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

Шины событий

 

event bus

  • Разные шины событий оптимизируют маршрутизацию.
  • Шина по умолчанию получает события от сервисов AWS.
  • Пользовательские шины передают события конкретного приложения.
  • Партнёрские шины получают события от сторонних провайдеров.
  • Правила находятся между каждой шиной и её целями.
Разработка приложений на AWS

Обнаружение схем

 

event schema and registry

  • Производители и потребители нередко развиваются независимо.
  • Понимание структуры событий крайне важно.
  • Обнаружение схемы фиксирует структуру входящих событий.
  • Используйте его для проверки полезной нагрузки событий.
  • Используйте его для валидации интеграций.
  • Используйте его для генерации привязок для поддерживаемых языков.
Разработка приложений на AWS

Реестр схем

  • Реестр схем хранит схемы ваших событий.
  • Он помогает разработчикам понять структуру событий и генерировать привязки.

 

event schema and registry

Разработка приложений на AWS

Фильтрация событий

  • Фильтрация снижает лишнюю нагрузку на обработку.
  • Определяйте совпадения с помощью шаблонов событий JSON.
  • Шаблоны отбирают только нужные события.
  • Нижестоящие системы обрабатывают только релевантные события.

 

event filtering

Разработка приложений на AWS

Порядок событий

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

 

event ordering

Разработка приложений на AWS

Архивирование и воспроизведение событий

 

archiving and replaying

  • EventBridge умеет архивировать события и воспроизводить их позднее.
  • Воспроизводите события для восстановления после сбоев.
  • Воспроизводите события для тестирования новых потребителей.
  • Воспроизводите события для перестройки нижестоящих систем.
Разработка приложений на AWS

Обработка ошибок

 

handling errors

  • Событийно-ориентированные приложения должны безопасно обрабатывать ошибки.
  • К сбоям относятся: дублирующиеся события.
    • Ошибки при обработке.
    • Недоступные потребители.
  • По возможности проектируйте потребителей идемпотентными.
Разработка приложений на AWS

DLQ и destinations

 

handling errors

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

Тестирование и валидация событий

  • Тестирование событийно-ориентированных приложений проверяет маршрутизацию.
  • А также фильтрацию событий.
  • А также повторные попытки обработки событий.
  • И подтверждает работу в распределённых системах.
  • Используйте AWS SAM для генерации тестовых событий.
  • Тестовые события воспроизводят точный JSON-вывод.

 

testing

Разработка приложений на AWS

Что тестировать

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

 

testing

Разработка приложений на AWS

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

Разработка приложений на AWS

Preparing Video For Download...