Cобытийно-ориентированная архитектура — это шаблон архитектуры, позволяющий в реальном времени обнаруживать, обрабатывать, управлять и реагировать на события. В терминологии EDA событие — это действие, инициирующее уведомление либо изменение в состоянии приложения.
Типичный пример — видеоигра: приложение откликается на щелчки мыши или выбор меню.
Как работает EDA
Событийно-ориентированная архитектура состоит из трех ключевых компонентов: производителей событий, брокеров и получателей. Производители генерируют поток событий и отправляют брокеру. Он фильтрует и направляет события соответствующим потребителям. События доставляются в реальном времени, что позволяет получателям реагировать на них по мере их появления.
В событийно-ориентированной архитектуре производители и получатели сообщения отделены друг от друга. То есть производитель не знает, какие получатели принимают события, а пользователи не знают, какие производители их генерируют. Такое разделение позволяет независимо масштабировать, обновлять и развертывать производителей и получателей.
При этом путь сообщения может быть довольно сложным: ему необходимо взаимодействовать со множеством приложений, написанных на разных языках, использующих разные API и протоколы передачи данных.
Существуют две распространенные модели доставки событий в EDA: pub/sub и потоковая передача. В модели pub/sub инфраструктура обмена сообщениями отслеживает подписки и отправляет события каждому подписчику. В модели потоковой передачи события записываются в лог событий, а получатели могут читать их из любой части потока.
Event-driven-архитектура обеспечивает гибкость, масштабируемость и отказоустойчивость, что делает ее подходящей для современных приложений со сложными рабочими процессами, обработкой событий в реальном времени и интеграцией на основе событий.
Примеры использования событийно-ориентированной архитектуры
У event-driven-архитектуры широкий спектр использования: от игр и интернет-магазинов до IoT и бизнес-приложений.
Обработка заказов онлайн-магазина
В момент размещения заказа пользователем запускается событие, инициирующее работу со складскими запасами, обработку платежей и координацию доставки.
Сбор данных интернета вещей (IoT)
IoT-устройства генерируют события, передавая их на различные платформы.
Регистрация и аутентификация пользователей
После входа в систему или регистрации пользователя запускаются события для проверки учетных данных, обновления профиля и предоставления доступа к системным ресурсам.
Система оповещения
События запускаются при выполнении определенных условий, например: получение новых сообщений, назначение задач, уведомление пользователей по электронной почте, через SMS или push.
Аналитика в реальном времени
События запускаются при получении потоков данных, что позволяет осуществлять непрерывный анализ и генерировать данные, например, мониторить трафик веб-сайта или обнаруживать мошеннические действия.
Управление рабочим процессом
События запускаются после выполнения задачи или достижения контрольной точки, ускоряя рабочий процесс и обеспечивая бесперебойную совместную работу и автоматизацию.
Микросервисы, управляемые событиями
События используются для взаимодействия между множеством микросервисов, что позволяет создавать слабосвязанные и легко масштабируемые системы.
Преимущества event-driven-архитектуры
Событийно-ориентированный подход имеет большой список достоинств. Ниже самые существенные.
- Слабая связанность и масштабируемость
EDA способствует слабой связанности между компонентами систем, отделяя их с помощью событий. В event-driven-архитектуре компоненты взаимодействуют посредством асинхронных сообщений о событиях, что позволяет разрабатывать, развертывать и масштабировать их независимо друг от друга.
- Обработка событий в реальном времени
EDA обеспечивает обработку и реагирование на события в реальном времени, по мере их возникновения. Event-driven-архитектура особенно хорошо подходит там, где обработка данных в реальном времени и оперативность реагирования критически важны, например, в финансовых системах, IoT-приложениях или при мониторинге.
- Надежность и отказоустойчивость
Повышается надежность и отказоустойчивость систем за счет использования событийно-ориентированной коммуникации. События могут регистрироваться и храниться в долговременном хранилище, что позволяет обрабатывать ошибки, восстанавливать и воспроизводить события.
- Бесшовная интеграция с разнородными системами
EDA обеспечивает бесшовную интеграцию, обеспечивает обмен данными и взаимодействие между системами, поскольку события могут потребляться и создаваться различными системами независимо от их базовых технологий и языков программирования.
Недостатки событийно-ориентированной архитектуры
При своих весомых преимуществах EDA имеет и определенные недостатки.
Сложность
Event-driven-архитектура создает дополнительную сложность по сравнению с традиционными монолитными архитектурами.
Упорядочивание событий
Правильный порядок событий может быть необходим в определенных сценариях использования, таких как финансовые транзакции, и требует тщательной разработки и реализации, что может оказаться сложной задачей.
Согласованность событий
В распределенных системах непросто обеспечить согласованность событий между несколькими сервисами или компонентам. Вдобавок поддержание целостности данных и обеспечение корректного обновления всех соответствующих систем в ответ на события может оказаться трудной задачей.
Отладка и устранение неисправностей
Выявление и диагностика проблем в системе, управляемой событиями, может быть трудной задачей по сравнению с системами «запрос — ответ». События могут вызывать ряд реакций в различных компонентах, что затрудняет отслеживание потока и выявление первопричины проблем.
Применение event-driven подхода
EDA используется в системах Business Rules Engine (BRE). BRE-платформы в реальном времени реагируют на события согласно заданным политикам принятия решений. При этом сами события могут касаться чего угодно: правового регулирования, отношений с клиентами, финансов и многих других аспектов деятельности организации. Вот простой пример условия для реагирования на событие согласно заданной политике: все клиенты, единовременно потратившие не менее $100, получают скидку 10%.
Основные преимущества BRE-платформ — это улучшенный комплаенс, автоматизация маркетинговых или других повторяющихся задач и, как следствие, снижение числа ошибок.
Заключение
В целом событийно-ориентированная архитектура (EDA) обеспечивает гибкость, масштабируемость и отказоустойчивость, что позволяет организациям разрабатывать и развертывать надежные системы.