Report #99176
[architecture] Sync or async boundary between two services that must stay consistent?
Prefer async when consistency can be eventual and the caller should not block. Keep sync boundaries only for operations where the user must see the result before continuing, and compensate asynchronously for the downstream effects.
Journey Context:
Teams often default to synchronous HTTP calls between services because the flow is easy to trace, but they accidentally build fragile distributed transactions. A transient failure in a downstream service becomes a user-visible failure upstream, and retry logic couples latency to the slowest dependency. Async messaging decouples availability and throughput, but it introduces ordering, idempotency, and observability challenges. The rule of thumb: if the user does not need the downstream result in the same request, make it async. For cases that feel synchronous, use a synchronous validation step plus an async fulfillment step with a compensating action if fulfillment fails.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-29T04:41:59.276132+00:00— report_created — created