Event bus для оператора: общий нерв вместо point-to-point интеграций
Каждая новая интеграция в point-to-point модели — boilerplate и debt. Event bus делает события first-class объектом архитектуры. Topics, contracts, владельцы.
Обсудить задачуЗачем оператору event-driven core
В типичном операторе 30-50 систем. В point-to-point модели каждая новая интеграция — отдельный коннектор, со своим контрактом, своим способом восстановления после падения, своим owner. Через 5 лет интеграционный layer становится дороже, чем core-системы.
Event bus превращает события (активация, платёж, пополнение, инцидент, изменение тарифа) в first-class объект архитектуры. Producer публикует событие в topic — consumer’ы (любое количество) подписываются и реагируют.
Это не «технология ради технологии». Это операционная необходимость для оператора, у которого больше 20 потребителей одних и тех же событий.
Структурные элементы
Topics. Логические каналы событий. Принципы именования: {domain}.{entity}.{action} — billing.payment.received, network.session.started, crm.case.created.
Schemas / contracts. Каждое событие имеет схему (Avro / JSON Schema / Protobuf). Контракт — обязательство producer’а: формат не меняется без backward compatibility или major version bump.
Schema registry. Централизованное хранилище схем с историей. Consumer’ы валидируют события против registry.
Producer guarantees. At-least-once delivery, идемпотентные событийные ID, ordering в рамках partition.
Consumer patterns. Каждый consumer держит свой offset, может re-process от нужной точки. Slow consumer не блокирует fast consumer.
Dead letter queue. Сообщения, которые consumer не смог обработать, идут в DLQ для разбора, а не теряются.
Observability. Метрики по топикам: throughput, lag, error rate. Trace events через цепочку consumer’ов.
Где обычно ломается
Bus есть, контрактов нет. Producer меняет формат события, consumer’ы ломаются молча. Через месяц никто не знает, какие данные actual.
Topic naming chaos. Каждая команда называет topics по-своему. Через год — невозможно понять, кто что публикует и кто слушает.
Owner topic’а отсутствует. При изменении схемы непонятно, с кем согласовывать. Изменения происходят без согласования.
Bus сделан под одно решение (например, для CDP), но потом в него начинают сливать всё подряд. Capacity не пересчитан, latency растёт.
Для критичных flow используется bus без проверки on-time delivery — например, биллинг публикует событие платежа, но consumer (CRM) обрабатывает с задержкой 5 минут, и оператор contact center видит «не оплачено» уже после оплаты.
Идемпотентность не enforced. При retry consumer создаёт duplicate, и downstream-данные расходятся.
Governance модель
Bus — общий ресурс. Без governance он деградирует за 12-18 месяцев.
Минимум:
- Каждый topic имеет owner (data steward / domain owner).
- Schema changes требуют PR review с обязательным acknowledge от consumer’ов.
- Backward compatibility — обязательное правило для public topics.
- Operating routine — еженедельный обзор top consumers / producers, lag, error rates.
Без owner’а bus превращается в свалку.
Что не event’и
Не всё надо публиковать в bus. Запросы (request/response) — это не event. Их место — API Gateway, не event bus. Большие файлы (CDR-batch на гигабайты) — не event, это файловый поток.
Event — нечто, произошедшее с бизнес-сущностью, которое может интересовать несколько consumer’ов. Если нет минимум двух consumer’ов или потенциала на них — это просто RPC-вызов.
Как SamaraliSoft подключается
Event-Driven Blueprint — 6-8 недель. Inventory текущих integrations, дизайн topic taxonomy, governance framework, technology choice (Kafka / RabbitMQ / managed cloud), pilot scope — обычно один domain (биллинг или network), интеграция 3-5 consumer’ов.
Связанное
- /architecture/telecom-cdp-architecture/ — CDP как consumer events
- /architecture/telecom-realtime-decisioning-architecture/ — decisioning на events
- /insights/telecom-integration-debt/ — интеграционный долг
- /architecture/telecom-partner-api-platform/ — partner API
Что ещё стоит изучить
Темы из этой же области, которые часто разбираем вместе с этой
CRM
Не коробочный CRM, а правильно выстроенный контур управления клиентами — от первого контакта до лояльности.
→РешениеBI
Аналитика — не красивые графики на стене. Это ответ на вопрос 'почему?' до того, как проблема станет убытком.
→РешениеКонтакт-центр
Контакт-центр — не телефонная станция, а точка, где клиент решает: остаться с вами или уйти. Вопрос в том, как он устроен внутри.
→РешениеИнтеграции
Интеграции — невидимый, но критический слой. Когда он работает — системы общаются. Когда нет — данные теряются, а люди копируют из окна в…
→Об этом не просто пишу — могу прийти, разобрать вашу ситуацию и спроектировать решение под ваш контур.
Обсудить применение →Готовы обсудить вашу задачу?
Расскажите, что не работает или что нужно построить. Первый разговор — без обязательств.
Обычно отвечаю в течение нескольких часов