ADR-0029: Introduce event-driven communication for order lifecycle updates
Status
Proposed
Context
Synchronous calls tie ordering, billing, and notifications. One slow call blocks unrelated work. Prior billing latency spiked and caused retry storms; we need side effects to decouple from the main write path.
Decision
Publish domain events for order lifecycle changes. Consumers react asynchronously. Synchronous calls are allowlisted for paths that must complete in a single user-facing request. Version events; breaking changes get a new name or a migration window.
Consequences
Positive: independent deploys; add subscribers (analytics, fraud) without changing the order service each time. Negative: eventual consistency, duplicate delivery, idempotency, and end-to-end tracing across hops. Observability: correlation IDs must cover async work.