Event-Driven

События, подписчики, гарантии доставки, outbox/inbox и наблюдаемость

Уровень: Продвинутый · около 5 ч · после курса: Свяжешь сервисы событиями: outbox, идемпотентность и saga - и поймёшь границы гарантий

Чему научишься

  • Спроектировать систему на событиях
  • Реализовать паттерны Outbox и Inbox
  • Понимать, почему exactly-once даёт не транспорт, а идемпотентный обработчик
  • Сделать saga для распределённой транзакции
  • Подключить observability через трассировку

Уроки курса (10)

Модуль 1 · Концепция Event-Driven

Domain Events, Event Bus vs Message Broker

  1. Event-Driven архитектура: что это и зачем она нужна - Делаем систему, где «события» связывают сервисы слабее, чем прямые вызовы
  2. Domain Event: «факт случился» - и это полезно - Как формулировать события и не путать их с командами
  3. Event Bus vs Message Broker: в чём разница - Когда хватает in-process событий, а когда нужен брокер (Kafka/RabbitMQ)

Модуль 2 · Доставка и идемпотентность

Pub/Sub, гарантии, idempotency, Outbox + Inbox

  1. Publisher/Subscriber: подписки без сюрпризов - Схемы топиков, ключи, фильтры и порядок обработки
  2. Гарантии доставки: at-most-once / at-least-once / exactly-once - Почему «ровно один раз» редко бывает бесплатным
  3. Idempotency: как не выполнить одно и то же дважды - Ключ идемпотентности, дедупликация и «повторная доставка»
  4. Outbox + Inbox: событие и данные в одной транзакции - Шаблон, который спасает от «записали в БД, но событие не ушло»

Модуль 3 · Saga, наблюдаемость, проект

Распределённые транзакции, трассировка и финальный проект

  1. Saga: как оркестрировать распределённые процессы - Компенсации вместо транзакций на всю систему
  2. Наблюдаемость: трассировка, корреляция, метрики и алерты - Чтобы события не превращались в невидимый хаос
  3. Мини-проект: события в BackendStart (LessonCompleted → Achievements/Email/Analytics) - Собираем рабочую схему: домен → outbox → брокер → подписчики