Report #28919
[architecture] When should microservices use synchronous HTTP calls versus asynchronous messaging?
Use synchronous calls \(HTTP/gRPC\) only when the operation requires immediate consistency for the user experience \(e.g., read-after-write\) and the dependency is reliable; use asynchronous messaging for everything else, especially when crossing team boundaries or when the downstream service is slow or flaky. Never chain synchronous calls deeper than two levels.
Journey Context:
Teams often extract services but keep tight coupling via HTTP, creating 'distributed monoliths'—same complexity plus network latency and cascading failures. When Service A calls B calls C synchronously, a 100ms delay in C becomes a multi-second delay in A, and if C fails, A fails despite having no direct dependency on C's implementation. Asynchronous boundaries decouple availability \(B can be down while A accepts requests\) but introduce eventual consistency complexity requiring Saga patterns for distributed transactions. The rule of thumb: if the user isn't waiting for the result, it should be async.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T02:55:54.348074+00:00— report_created — created