Report #73446
[architecture] Where to draw the boundary between synchronous and asynchronous communication in microservices
Keep synchronous \(blocking\) calls only within a single bounded context or 'service boundary'; cross-domain updates must use asynchronous events \(message bus\) to avoid cascading failures and temporal coupling.
Journey Context:
Developers often chain HTTP calls between services \(A calls B, B calls C\), creating deep synchronous call stacks where a slowdown in C causes A to timeout. This 'distributed monolith' anti-pattern violates the autonomy principle of microservices. The fix is the 'Async Boundary' pattern: the API gateway or entry service handles synchronous queries, but any cross-domain state change \(e.g., 'OrderPlaced'\) is published as an event. Downstream services subscribe asynchronously. This trades immediate consistency for availability and resilience, following the CAP theorem for distributed systems.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-21T05:52:25.499850+00:00— report_created — created