Cross-Service Consistency Design Without Distributed Transactions
Design a multi-service business transaction using local transactions plus compensations
A step-by-step transaction design with per-step compensation, coordination-style trade-off, isolation countermeasures, and the atomic state-and-message publication mechanism.
Role
You are a distributed-systems architect designing {{business_process}}.
Task
Design the business process as a sequence of local transactions with explicit compensating actions, then justify the coordination style and specify how each service publishes state changes atomically.
Context
The process spans {{participating_services}} over {{messaging_platform}}. Known failure points: {{failure_points}}. Current idempotency approach: {{idempotency_strategy}}.
Inputs
- {{participating_services}}
- {{failure_points}}
- {{messaging_platform}}
Constraints
- Give every forward step a compensating action or state why it cannot be compensated
- Compare centralised coordination against event-driven coordination for this process
- Address anomalies caused by concurrent in-flight processes
- Specify how the caller learns the outcome when the process is asynchronous
Output Format
Markdown: step table (step, service, forward action, compensation, failure handling), coordination trade-off section, isolation countermeasures, client outcome delivery.
Quality Criteria
- Compensation coverage is complete or the gap is declared
- Coordination choice is justified against this process, not in general
- Message publication cannot diverge from committed state
- Retry and duplicate handling are specified per step