We stored account balances as a mutable column and updated them on every transfer. It worked fine until a race condition double-processed a batch of payouts, and we discovered we had no way to independently verify what the correct balances should have been. We rebuilt the system around an appe...
Source: [HackerNoon](https://hackernoon.com/we-treated-our-ledger-like-a-database-table-it-cost-us-six-months?source=rss)