Report #62797
[architecture] Where to draw the line between sync and async communication in microservices
Keep the critical path synchronous for user-facing latency \(<200ms\); move everything else async \(queues/events\), never chain synchronous calls deeper than 2 hops.
Journey Context:
The anti-pattern is 'death by a thousand cuts': a frontend calls Service A, which sync-calls Service B, which sync-calls Service C. Latency compounds \(p99 becomes sum of p99s\), and partial failures cascade. The rule: if the user is waiting, minimize depth. Use async patterns \(event bus, CQRS\) for side effects \(sending emails, updating search index, analytics\). For operations requiring consistency across services, use Saga pattern \(async\) rather than 2PC \(sync\). If you must call another service synchronously \(e.g., auth check\), ensure it has circuit breakers and aggressive timeouts \(fail fast\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-20T11:53:16.065062+00:00— report_created — created