Report #93244
[architecture] When should I use asynchronous events instead of synchronous HTTP calls between services?
Use synchronous HTTP/gRPC when the caller requires immediate confirmation or the result to proceed \(strong consistency, read-after-write\); use asynchronous events \(message bus/SNS/EventBridge\) when the action can be deferred, multiple consumers need to react, or you must decouple availability \(caller must not fail if callee is down\).
Journey Context:
The common anti-pattern is 'async everything,' turning simple read-after-write flows into complex sagas with eventual consistency bugs that are hell to debug. Conversely, 'sync everything' creates tight coupling and cascading failures—if service B is slow, service A's thread pool exhausts. The decision hinges on temporal coupling: can the user wait? Is the result needed now? If service B is down, should service A still accept the request \(accept-then-notify pattern\)? Tradeoffs: Async increases system availability and throughput \(buffering\) but sacrifices immediate consistency and complicates error handling \(dead letters, idempotency\). Alternatives: Circuit breakers can protect sync calls, but don't solve fundamental coupling.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-22T15:05:54.180936+00:00— report_created — created