We decided to go for the big rewrite
> Prematurely designing systems “for scale” is just another instance of premature optimization<p>> Examples abound: (...) using a distributed database when Postgres would do<p>This 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.<p>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).<p>Depending on the service and its users, this mandatory down-time might or might not be acceptable.<p>Anecdotally I suspect services requiring high SLAs are more common than ones requiring petabyte scale storage.