"Your Coffee Shop Doesn't Use Two-Phase Commit"
Those who have worked on database applications will be familiar with two-phase commit. Whenever there are multiple application elements or components in a distributed system, there are two phases in order to perform an atomic transaction. In the first phase, all the participating components have to say "yes" for the transaction. If all of them say "yes," then in the second phase the changes have to be committed, which completes the transaction. This is an oversimplified description of the two-phase commit.
A transaction is said to be atomic if it cannot be divided further. There is another way to interpret this: If there are multiple steps in a given transaction, ...