Oh and before someone says "we outsource fixing our toilets to plumbers" - in this case we are not event talking about replacing a flap, we are talking about being able to use a plunger.
Sure, I can do all that by myself but that takes time, time that is better spent serving my clients instead of setting up yet another replicated db. It takes me a few minutes to setup an Amazon RDS instance with all that enabled out of the box.
a) do not have service that operates 24x7
b) do not have peopleware needed for 24x7 operations
c) service customers that do not have 24x7 operations
A metric boat load of now shuttered "startups" would have been going concerns providing very nice long term living (and retirement) to their owners had they been optimized for "not spending 109% of revenue for Yet Another Thing We Should Use As a Service".
Oh to have those problems
In our (Intercom) case these tasks are not simple.
We are lucky to have had exponential growth in most metrics (including database throughput) for the entire 7 years of our existence. This is a harsh environment for datastores! A 99.9% SLA makes it even harder.
We are also nowhere near finished building out our vision for the product. We prefer to focus on that instead of operating data stores, which we can pay someone else to do.
Then you need search, so you either build the search yourself, or build on solr/elasticsearch or anything else building on lucene. Then you need a cache, and suddenly you need to worry about cluster setups, choose a cache implementation. Then you end up with a use case which would be easily solved with a persistent queue, or neo4j or whatever, but your on-premise solutions block you.
It sounds simple to have n different backend solutions, and to offer a binary choice - everything built-in and everything not-built in. But usually you end up with about n! * #on-premise different setups and they all end up with their own classes of bugs and difficulties to setup.
See more of my thoughts here:
Outsourcing to SaaS means trusting your (and your customers) data to lots of different companies. And in the case of SaaS those companies could be small software companies or even one-man operations. This is not very compatible with upcoming data privacy regulations like GDPR. And I suspect that more and more companies are going to be looking at a model where they purchase/license/outsource non-core software but host it themselves in their own datacenter or cloud accounts.
The solution I am working towards in my current project is to build the software from day 1 with dual-mode operations in mind. Easy to host as SaaS but with the option of running Standalone on customer premises with the same codebase. Just different configuration/modules.