Событийно-ориентированная архитектура: принципы и преимущества EDA

Событийно-ориентированная архитектура (EDA) строится на обмене событиями вместо прямых синхронных вызовов. Разбираем компоненты, плюсы и минусы подхода и инструменты Yandex Cloud для его реализации.

Дмитрий Смирнов
Дмитрий Смирнов
2 мин
Событийно-ориентированная архитектура: принципы и преимущества EDA

Событийно-ориентированная архитектура, или Event-Driven Architecture (EDA), — подход, при котором компоненты системы обмениваются не прямыми синхронными вызовами, а событиями: сигналами об изменении состояния. Один сервис публикует событие, другие его получают и выполняют нужные действия. Источник события не обязан знать, кто его обработает, поэтому компоненты можно развивать и масштабировать независимо.

Из чего состоит EDA

  • Producer — источник события: сервис заказов, платёжный модуль, мобильное приложение, IoT-устройство.
  • Транспортный слой — брокер, шина, маршрутизатор или потоковая платформа, которая принимает событие и передаёт дальше.
  • Consumer — сервис, который получает событие и реагирует на него.

На практике используют две модели: публикации и подписки, когда на одно событие подписаны несколько потребителей, и потоковую передачу событий, например через Apache Kafka. При проектировании нужно решить, что нести в событии: полный набор атрибутов (меньше дополнительных запросов, но тяжелее контракт) или только идентификатор (легче событие, но потребитель сильнее зависит от внешнего источника данных).

Чем EDA отличается от монолита

В монолите модули взаимодействуют напрямую и синхронно, а любое изменение затрагивает всю систему. В EDA компонент публикует событие и не ждёт немедленного ответа, поэтому можно подключать новых потребителей, не меняя источник. Зато монолит проще отлаживать на старте, а в EDA путь запроса распределён между очередями.

Преимущества и недостатки

Плюсы: слабая связанность компонентов, независимое масштабирование (например, при росте потока заказов в праздники) и работа в реальном времени без постоянного опроса систем.

Минусы: более высокая сложность, отложенная согласованность данных и необходимость отдельно проектировать доставку, повторы и обработку ошибок. Даже механизмы вроде dead letter exchange в RabbitMQ не решают проблему автоматически.

Мониторинг и инструменты в Yandex Cloud

Для отладки одних логов недостаточно: нужны метрики (Prometheus, Yandex Managed Service for Prometheus), централизованные логи (Yandex Monium Logs) и трассировка (Yandex Monium Traces).

Для построения самой цепочки в Yandex Cloud используют Yandex API Gateway для приёма внешних событий, Yandex Message Queue для очередей, Yandex Cloud Functions и Serverless Containers для обработчиков, Yandex Data Streams для потоков, YDB для хранения состояния, Yandex Workflows для оркестрации и EventRouter для маршрутизации событий подписчикам.

Типичные сценарии EDA — электронная коммерция (создание заказа запускает оплату, обновление остатков, уведомления и аналитику), обработка данных в реальном времени и мониторинг с оповещениями.

Источник: https://yandex.cloud/ru/blog/event-driven-architecture

Дмитрий Смирнов

Автор новости

Дмитрий Смирнов

Читайте также

Поделиться

Комментарии(0)

Оставьте комментарий

Войдите, чтобы присоединиться к обсуждению