Introduce event-driven communication for order lifecycle updates
- Status: proposed
- Deciders: <team or role>
- Technical story: <issue link> · Date: <YYYY-MM-DD>
Context and Problem Statement
Tight sync coupling between services causes outages and review drag. Billing and notifications should not sit on the same request chain as the core write forever.
Decision Drivers
- Decouple side effects from core requests
- Observable contracts for lifecycle changes
Considered Options
- More sync APIs — fails the coupling problem
- Outbox + domain events — matches scaling and org boundaries
Decision Outcome
Adopt domain events for lifecycle; sync only where user latency demands it, with a maintained allowlist.
Consequences
- Subscribers can scale; ops must own ordering, idempotency, and traces
- UI and downstreams accept eventual state
Pros and Cons of the Options (summary)
Events win for growth; cost is distributed systems operations.
Confirmation
Pending architecture review; pilot on read-side subscribers first.