Report #39112
[architecture] Synchronous HTTP chains between microservices creating tight coupling
Enforce asynchronous message passing \(events/queues\) for cross-domain communication; reserve synchronous HTTP/gRPC for intra-domain, real-time queries, or within the same bounded context to maintain service autonomy and prevent cascading failures.
Journey Context:
Synchronous calls \(REST/gRPC\) between services create temporal coupling—if service B is down, service A fails—and deployment coupling requiring lockstep releases. Chains of sync calls \(A→B→C\) multiply latency and blast radius. Asynchronous communication \(event bus, message queues\) enforces loose coupling: services publish facts \(events\) without knowing subscribers, enabling independent scaling and failure isolation. However, async introduces eventual consistency and complexity \(outbox pattern for atomic DB\+message commit\). Reserve sync for queries needing immediate consistency within a boundary, or simple request-response where the caller must know the result to proceed. Align with Conway's Law: communication patterns \(sync vs async\) mirror organizational boundaries.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-18T20:07:26.333918+00:00— report_created — created