As I was reading through some random stuff on Linux, I came across an interesting project called Lightstream. As the description says, this is a project that continuously replicates Sqlite databases to S3 compatible buckets.
That seemed pretty interesting. Sqlite is more performant that most people think and really reduces the complexity of an application. If you don’t have to manage a database server and all of the networking configuration that goes with a database cluster, you can focus on building the app and not yak shaving to get a database set up.
This point is well described by the blog about why the author created Litestream and he is on to something.
Instead of creating an elaborate scalable infrastructure for a SaaS application, why not create a replica of the application for each customer? You need to keep customer configuration and data seperate while reducing contention as much as possible. Having an entire seperate virtual server is a very simple way to do all of the above.
Of course, there are situations where this wouldn’t work if you have a hugely scaled application. But applications of that scale are the exception that prove the rule. For most of us, the simpler the better.