We decided to go for the big rewrite
> Prematurely designing systems “for scale” is just another instance of premature optimization> Examples abound: (...) using a distributed database when Postgres would doThis is the only part of the article that bugged me a little, because in my experience the choice between single-machine and distributed databases is not so much about scale as it is about availability and avoiding a single point of failure.Even if your database server is fairly stable (a VM in a robust cloud for instance), if you use Postgres or MySQL and you need to upgrade to a newer version of the database (let say for an urgent security update), you have no choice but to completely stop the service for a few  seconds / minutes (assuming the service cannot work without its database).Depending on the service and its users, this mandatory down-time might or might not be acceptable.Anecdotally I suspect services requiring high SLAs are more common than ones requiring petabyte scale storage.