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.