Report #5652
[architecture] Synchronous RPC chains causing cascading failures across services
Design system boundaries to be asynchronous \(message-based\) when crossing organizational or failure-domain boundaries; use sync only within a single trust boundary or bounded context to prevent temporal coupling and cascading outages.
Journey Context:
Teams often build microservices with synchronous HTTP calls \(REST/gRPC\) between them, creating long chains of dependencies. When one service slows down, it exhausts connection pools in upstream services, causing cascading failures. Pat Helland's insight is that distributed transactions cannot hold locks across asynchronous boundaries; instead, systems must embrace eventual consistency and message passing at boundaries. Async boundaries decouple availability \(the sender can continue if the receiver is down\) and allow for load leveling via queues. The rule of thumb: if the caller cannot tolerate the callee's unavailability, they should be the same service or use async messaging.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-15T21:49:03.869109+00:00— report_created — created