m@ksim.pro
К списку статей
ИТ 3 мин чтения

Событийно-ориентированная архитектура: объяснение для не-инженеров

Что такое event-driven архитектура, почему её хотят инженерные команды и как оценить, имеет ли это смысл для вашего продукта - без необходимости разбираться в коде.

В какой-то момент почти каждая инженерная команда, построившая рабочий продукт, начинает говорить о «переходе на события» или «сделать систему событийно-ориентированной». Если вы основатель или владелец бизнеса без глубокого технического бэкграунда, этот разговор обычно воспринимается как смесь амбиций и неопределённости - это реальная потребность или проект рефакторинга, который съест полгода и не даст видимых результатов?

Ответ зависит от вашей конкретной ситуации. Но вы можете оценить это самостоятельно, если понимаете базовую идею.

Модель прямых запросов и её ограничения

Большинство систем начинается с простой модели: когда вам что-то нужно, вы запрашиваете это напрямую. Страница загружается, база данных запрашивается, результат возвращается. Заказ оформляется, вызывается система инвентаризации, возвращается подтверждение. Это синхронно, прямолинейно, легко понять.

Проблема возникает с масштабом и связностью. Если ваш сервис заказов напрямую вызывает сервис инвентаризации, сервис оплаты, сервис уведомлений и аналитическую систему - каждый из них является зависимостью. Если кто-то из них медленный или недоступен, сервис заказов замедляется или падает. Добавление новой системы, которой нужно реагировать на заказы, означает изменение сервиса заказов.

Со временем напрямую связанная система превращается в паутину зависимостей, которую сложно менять, хрупкую при сбоях и медленную в расширении.

Что значит «событийно-ориентированный»

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

Сервис заказов не вызывает систему инвентаризации напрямую. Он говорит «оформлен заказ» и продолжает работу. Система инвентаризации, система оплаты и система уведомлений каждая реагирует в своё время, в своём темпе, независимо.

Связность заменяется контрактом: структурой и смыслом события. Сервисы больше не зависят напрямую друг от друга.

Что вы реально получаете

Преимущества реальны, но не универсальны:

  • Устойчивость - если сервис уведомлений не работает, он обрабатывает событие позже, когда восстановится. Заказ не теряется.
  • Расширяемость - добавление новой реакции на существующее событие (например, проверка на мошенничество при каждом новом заказе) не требует изменения сервиса заказов.
  • Аудитируемость - лог событий является естественным журналом аудита. То, что произошло и в каком порядке, можно восстановить.

Издержки также реальны: событийно-ориентированные системы сложнее отлаживать, сложнее трассировать и требуют инфраструктуры (брокера сообщений вроде Kafka или RabbitMQ), которую нужно эксплуатировать.

Когда это правильный выбор

Событийно-ориентированная архитектура имеет смысл, когда у вас несколько систем, которым нужно реагировать на одни и те же бизнес-события, когда нужна устойчивость через границы сервисов, или когда вы строите интеграции с внешними партнёрами, которые не могут зависеть от прямых API-вызовов.

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

Вопрос, который нужно задать своим инженерам

Самый полезный вопрос - не «должны ли мы быть событийно-ориентированными?». Это «какую конкретную проблему мы решаем, и каковы альтернативы?». Если ответ - конкретный список сбоев интеграций, узких мест масштабирования или ограничений расширяемости, разговор идёт о реальной проблеме. Если ответ - «это более современно» или «именно так делает Netflix» - спросите, что будет стоить это эксплуатировать.

К списку статей
Контакт

Если эта статья отозвалась - напишите. Я отвечаю лично.

Telegram