Consider order processing which consists of multiple micro-services each for:
- Create order.
- Make payment.
- Update inventory.
- Deliver order.
Let say saga execution coordinator is used to implement saga, where each of above is in own micro-service with their own persistence. If Step 2 - 'Making payment' was successful and start and end of transaction was notified to coordinator, however before make payment service could notify the update inventory, the make payment process instance went down. How the same can be handled?
Brainstorming best practice for a use-case of distributed transaction for design of greenfield system. Should the check be implemented on the coordinator side or it's better to implement multiple instances for each service behind a centralized queue, assuming each step is idempotent and retry able.