Lets imagine that we have a bank and an ATM. They communicate over network, which could fail. Is it possible to create a scenario, where communication between them is 100% durable. In this case it means, that:
client withdrawn physical amount of money
<=>
account balance updated accordingly
Let's check couple of scenarios:
- ATM sends a requests, bank sends a confirmation. Confirmation get lost, bank updated account but client haven't got the money.
- (if bank awaits confirmation from ATM to update balance) ATM sends a requests, bank sends a confirmation, ATM sends ack for reception. Ack got lost. ATM issued money, but bank never updated an account.
So I never could create a solution, where failing network would not prevent money from getting lost on either side.
Please, advise.