🏗️ Event-Driven Architecture: когда события лучше AP
Когда система маленькая, API-запросы решают почти всё. Один сервис вызвал другой, получил ответ, пошёл дальше. Прямо, понятно, удобно.
Но потом система растёт. Появляются очереди, уведомления, интеграции, аналитика, фоновые процессы, ретраи. И в какой-то момент архитектура на одних синхронных API начинает скрипеть.
Именно тут в игру заходит Event-Driven Architecture.
Что это по сути? Сервис не говорит другому сервису: “сделай вот это прямо сейчас”. Он публикует событие: “это уже произошло”.
Например:
• order_created • payment_completed • user_registered • invoice_paid
А дальше уже другие сервисы сами решают, что им делать с этим событием.
Почему это мощно
🔹 Слабая связность Отправителю не нужно знать всех получателей. Он просто публикует событие.
🔹 Масштабирование К одному событию можно подключить сколько угодно потребителей: уведомления, аналитика, биллинг, CRM, AI-агенты.
🔹 Асинхронность Не надо держать пользователя в ожидании, пока 5 сервисов синхронно отработают цепочку.
🔹 Гибкость развития Новый сервис можно подключить к существующим событиям почти без переписывания ядра.
Но магии тут нет. Есть цена.
❌ Сложнее дебажить Запрос в API ты видишь сразу. Событие может уехать в брокер, обработаться позже, упасть на consumer’е, повториться через retry.
❌ Eventual consistency Данные в системе могут обновляться не мгновенно. Для бизнеса это иногда окей, иногда нет.
❌ Дубликаты и идемпотентность Событие могут обработать дважды. Если это не учесть, получишь двойные списания, повторные письма и весёлый продакшн.
❌ Схемы событий становятся контрактом Если публикуешь мусор или меняешь формат без дисциплины, ломаешь полсистемы.
Где EDA особенно хороша
• e-commerce • fintech • аналитические платформы • notification systems • интеграционные шины • multi-agent и AI workflow системы
Где лучше не усложнять
Если у тебя 2 сервиса и одна команда, не надо тащить Kafka только потому, что это красиво в резюме. Обычный API может быть честнее, дешевле и надёжнее.
Мой практический вывод
Event-driven architecture хороша не тогда, когда хочется “модно”. Она хороша тогда, когда системе реально нужно реагировать на факты, а не жить в бесконечной цепочке синхронных вызовов.
Если коротко:
• нужен мгновенный ответ и жёсткая транзакционность → API • нужна реакция многих систем на одно действие → events
Архитектура взрослеет в тот момент, когда ты перестаёшь искать один правильный паттерн на всё.
Telegram: https://t.me/ArchTeamAI MAX: https://max.ru/join/6rPY29LEPnsK4iOroZsQK10VfVW3pPzTo9np0bD3qzI Setka: https://set.ki/channel/hMaAsnN
#Архитектура #EventDrivenArchitecture #SystemDesign #Kafka #NATS #Microservices #AI #Telegram #MAX #setka