advanced

Async messaging

Используйте queues и streams для decoupling availability и throughput, проектируя duplicates, ordering, poison messages и replay.

Queues и event streams отделяют producers от availability consumers и сглаживают всплески throughput. Дают temporal decoupling, но переносят сложность на ordering, duplicates, poison messages, replay и schema evolution.

Используйте async, когда caller не нужен немедленный результат и buffering допустим. Критические user paths оставляйте synchronous или с явной деградацией.

На интервью: выберите sync vs async для «order placed» — inventory, email, analytics; обсудите at-least-once handling.

Типовые ошибки: async для операций, на которые user ждёт, без UX задержки; нет dead-letter queue; exactly-once без дизайна.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Задайте delivery semantics и duplicate handling.
  • Мониторьте lag, DLQ depth и consumer health.
  • Версионируйте event schemas с compatibility rules.
  • Документируйте replay и idempotent handlers.