Report #104661
[architecture] Should I use synchronous or asynchronous communication between services?
Use synchronous \(HTTP/gRPC\) for request-response where low latency and immediate consistency are required, and the caller can handle failures gracefully. Use asynchronous \(message queues, events\) for decoupling, eventual consistency, and when the caller should not wait for the response. Avoid mixing sync calls in a chain \(cascading failures\). Prefer async for cross-service boundaries where possible to reduce coupling.
Journey Context:
Common mistake: using sync calls for everything leads to tight coupling, cascading failures, and poor resilience. Async introduces complexity \(eventual consistency, monitoring, deduplication\). The decision should be based on business need: if the user needs a response immediately \(e.g., checkout\), sync may be necessary, but you can still use async internally with a polling or webhook pattern. Tradeoff: sync is simpler to debug, async requires idempotency and ordering. Alternatives: sync with circuit breaker, or async with request-reply pattern \(e.g., using a reply queue\).
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-09-20T20:05:23.321684+00:00— report_created — created