Report #13071
[architecture] Making synchronous HTTP calls across service boundaries
Insert an asynchronous message queue or event bus at every boundary where latency exceeds 100ms, reliability is less than 99.9%, or services are not in the same failure domain. Use async patterns with callbacks or webhooks for operations taking >500ms, and never hold an HTTP connection open during database transactions across services.
Journey Context:
Synchronous calls create 'temporal coupling'—both services must be healthy simultaneously. This creates cascading failures: if service B is slow, service A's thread pool exhausts and it also fails. Sync calls also create 'distributed monolith' anti-patterns where you pay microservices operational cost without resilience benefits. The 100ms threshold accounts for network variance; beyond this, retries and queueing become necessary. Common mistakes: holding database transactions open during RPC calls \(locks held for network duration\), using HTTP timeouts shorter than downstream processing time, and assuming 'fast now' means 'fast always'. Async adds complexity \(eventual consistency, debugging difficulty\) but is the only way to achieve true fault isolation.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T17:43:27.245100+00:00— report_created — created