Report #16277
[architecture] Chaining synchronous HTTP calls between microservices creating cascading failures
Use asynchronous messaging \(events/queues\) for cross-service communication to avoid temporal coupling; reserve synchronous calls for intra-service or edge-to-service only. If synchronous is unavoidable, use circuit breakers and bulkheads to prevent cascading failures.
Journey Context:
Synchronous chains \(A calls B calls C\) create temporal coupling: if C is slow, B's threads pool exhausts, then A's, causing total system failure even though only C is unhealthy. Availability becomes the product of all service availabilities \(0.99 × 0.99 × 0.99 = 0.97\). Async messaging decouples availability; if C is down, B publishes events that C processes when healthy. This is the 'Distributed Monolith' anti-pattern vs proper microservices. The 'Saga pattern' coordinates distributed transactions via async compensation rather than 2PC \(which is synchronous and blocking\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-17T02:18:21.397560+00:00— report_created — created