{"type":"excalidraw","version":2,"source":"https://AwesomeSystemDesign.dev","elements":[{"angle":0,"strokeColor":"#6577aa","backgroundColor":"#eef1fc","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-1"}],"updated":0,"link":null,"locked":false,"id":"shape-0","type":"rectangle","seed":41,"x":36,"y":32.00000000000001,"width":390,"height":82.80000000000001,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-1"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-1","type":"text","seed":114,"x":56,"y":50.000000000000014,"width":350,"height":46.800000000000004,"fontSize":18,"fontFamily":1,"text":"# | Forward Action | Compensation\n(on failure)","originalText":"# | Forward Action | Compensation\n(on failure)","textAlign":"center","verticalAlign":"middle","containerId":"shape-0","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":1}},{"angle":0,"strokeColor":"#628572","backgroundColor":"#edf5ee","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-3"}],"updated":0,"link":null,"locked":false,"id":"shape-2","type":"rectangle","seed":187,"x":466,"y":31.999999999999986,"width":390,"height":199.8,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-2"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-3","type":"text","seed":260,"x":486,"y":49.999999999999986,"width":350,"height":163.8,"fontSize":18,"fontFamily":1,"text":"1 | Reserve inventory | Release\ninventory\n2 | Charge payment | Refund payment\n(if charged)\n3 | Create order | Cancel order\n4 | Confirm inventory | (no\ncompensation needed)","originalText":"1 | Reserve inventory | Release\ninventory\n2 | Charge payment | Refund payment\n(if charged)\n3 | Create order | Cancel order\n4 | Confirm inventory | (no\ncompensation needed)","textAlign":"center","verticalAlign":"middle","containerId":"shape-2","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":2}},{"angle":0,"strokeColor":"#a68a53","backgroundColor":"#fff7e6","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":[{"type":"text","id":"shape-5"}],"updated":0,"link":null,"locked":false,"id":"shape-4","type":"rectangle","seed":333,"x":36,"y":271.8,"width":509.54714,"height":411.7,"customData":{"revealStep":3}},{"angle":0,"strokeColor":"#394557","backgroundColor":"transparent","fillStyle":"solid","strokeWidth":1.5,"strokeStyle":"solid","roughness":0.7,"opacity":100,"version":1,"versionNonce":1,"isDeleted":false,"groupIds":["step-3"],"frameId":null,"roundness":null,"boundElements":null,"updated":0,"link":null,"locked":false,"id":"shape-5","type":"text","seed":406,"x":56,"y":289.8,"width":469.54714,"height":375.7,"fontSize":17,"fontFamily":1,"text":"What if payment FAILS after inventory reserved?\n\nStep 1: Reserve inventory ✓\nStep 2: Charge payment ✗ (card declined!)\n\nCompensation: RELEASE reserved inventory\n\nSaga steps with compensations:\n\nIf step N fails, run compensations for steps N-1 ... 1\nin reverse order.\n\nImplementation: Orchestration-based saga\nCheckout service is the orchestrator:\n→ Calls each service in sequence\n→ On failure, calls compensating actions\n→ Logs each step for audit trail and retry","originalText":"What if payment FAILS after inventory reserved?\n\nStep 1: Reserve inventory ✓\nStep 2: Charge payment ✗ (card declined!)\n\nCompensation: RELEASE reserved inventory\n\nSaga steps with compensations:\n\nIf step N fails, run compensations for steps N-1 ... 1\nin reverse order.\n\nImplementation: Orchestration-based saga\nCheckout service is the orchestrator:\n→ Calls each service in sequence\n→ On failure, calls compensating actions\n→ Logs each step for audit trail and retry","textAlign":"left","verticalAlign":"middle","containerId":"shape-4","lineHeight":1.3,"autoResize":false,"customData":{"revealStep":3}}],"appState":{"viewBackgroundColor":"#fbfbf8","gridSize":null},"files":{}}