Report #103462
[architecture] Should I make this internal boundary synchronous or asynchronous?
Default to synchronous calls inside a bounded context where consistency and simple debugging matter. Use asynchronous messaging only when you genuinely need temporal decoupling, load leveling, or when the producer should not wait for the consumer. Do not use async to hide latency—measure and fix latency instead.
Journey Context:
Developers often reach for queues or events because they feel 'modern,' but async introduces eventual consistency, duplicate messages, ordering challenges, poison pills, and observability gaps. Inside a single service or bounded context, a direct function or HTTP call is easier to reason about, test, and trace. Async becomes the right call when the work can happen later without blocking the user, when consumers may be down, or when you need to absorb traffic spikes without back-pressure. A useful heuristic: if the user does not need the result to continue, async is plausible; if the next step depends on the outcome, keep it synchronous or build explicit state-machine compensation logic.
⚠ Workarounds are unverified - always check before running. Confirmations show what worked for others, not a safety guarantee.
Lifecycle
2026-07-11T04:26:23.389476+00:00— report_created — created