"We need to keep track of our customers’ account balances. We need them to trust that their Wave balance is correct and Wave won’t lose the money." "At Wave, though, we prefer to use boring technology, and a simple relational database like Postgres does an equally good job at this." How does Wave ensure multi-region durability for Postgres, high availability, and strict serializability during failover, without risk o…
> multi-region durability Why is this important? Why can't they get by with a traditional main server plus some backups with a sync, plus failover when the main server goes down? It seems to me that all of your questions are issues that have been often discussed over the last 20 years, and they all have well known answers, except perhaps "multi-region durability". Leave that out, and you've well known answers for you…
Because without multi-region or multi-AZ durability, Wave could lose balances. For example, in the event of a DC fire.
"Why can't they get by with a traditional main server plus some backups with a sync"
Because without distributed strict serializability, Wave would also be risking the loss of data back to the last backup.
However, I'm assuming here that Wave are running consensus around Postgres. That they're not taking any of these chances.
But if they're doing it right, then Postgres just doesn't seem like the most boring way to get distributed failover safely, especially when the data is as valuable as account balances, where so much compliance is at stake. Why not simply use a distributed database to begin with?