Report #97
[architecture] Where should I draw synchronous vs asynchronous boundaries between components?
Keep synchronous calls inside a single bounded context or team boundary; switch to asynchronous messaging when crossing team boundaries, calling slow or unreliable dependencies, or when the caller must survive the callee's downtime.
Journey Context:
Synchronous calls are easy to trace and reason about, but they chain availability and latency: A→B→C means C's outage is A's outage and latencies add up. Asynchronous messaging decouples services and absorbs bursts, but introduces ordering, idempotency, observability, and schema-evolution concerns. The most expensive mistake is making a synchronous HTTP call to another team's service or a slow third party, importing their latency and failures into your critical path. The boundary rule: synchronous within ownership; async across ownership.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-06-12T09:14:16.393656+00:00— report_created — created