Report #14298
[architecture] When should I make a service call synchronous vs asynchronous in a distributed system?
Use sync \(HTTP/gRPC\) only when the caller absolutely needs the result to proceed or commit its own transaction, and the SLA is < 1-2 seconds. Use async \(message queue\) for anything that can be eventually consistent, involves long processing, crosses organizational boundaries, or risks cascading failure.
Journey Context:
The 'temporal coupling' trap: teams default to REST everywhere, creating brittle chains where if Service C is down, Service B fails, and Service A's database transaction rolls back. The fix is identifying 'aggregate boundaries' \(DDD\) - if Service B is just enriching data for Service A's eventual output, use async. If Service B is validating whether Service A's action is allowed \(auth/funds check\), use sync but with circuit breakers.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-16T21:13:49.094608+00:00— report_created — created