For example: I use Elasticsearch and have used it for the past 10 years, I have deployed ES clusters myself, I have been a team lead for infrastructure teams that had to support a ES cluster, etc. I would never, ever, choose to do it myself again if I can find a managed solution. It's a lot cheaper when you factor in that you will require at least 1 engineer with expertise (or being trained for it) to properly support a running ES cluster in production.
The same applies for databases (I've managed shards/clusters of Postgres and MySQL in my life), and Kubernetes clusters, and any other piece of infrastructure that becomes critical to your business, you have to manage it and therein lies the majority of the cost of any solution: supporting it. The cloud provisions, manages, backs up, fails over, etc., without intervention from my side. Yeah, I can set up all of that myself but that is another cost to take into consideration, and something also to be maintained over the years.
Yes, I can find open-source tools for a lot of issues in software engineering, I can't find anyone to run those tools for free, so the trade-off analysis is based on this when looking into solutions, and a lot of the solutions from cloud vendors is exactly managing resources for me and my teams.
Ditto. I've seen ES / Cassandra cluster management casually dropped on a team who just happen to use an frontend that relies on them. Those are usually the most brittle, unloved databases in the world, and everyone on the team ends up walking away with the false impression that "X is a tire fire, never use it".
> It is much different than having to sit in the car in the middle of the night to change a hard drive in the server that just failed because of a power surge.
Never ever had to go at night in a data center to replace a single disk failure, even in my DC days. Always the 1st working day after the disk failure, since they were redundant. Now, network gear upgrades during the nights, those I made a few and I'm happy they are history for me now. But even in a cloud world you have to do from time to time low-traffic time interventions.
- The term 'containerization' implies in theory (and somewhat in practice) that you package your software in such a way, that it can run on commodity hardware with enough resources.
- The huge success of open source means that for any given problem domain (KV stores, SQL, Web Server,LB, caches etc.). There exists a best-in-class solution that's free as in speech. In fact, cloud providers' solutions use these libraries as well.
- The development of languages that combine productivity and performance (Go/Java etc.) and with Moore's law enabling ridiculous core counts/RAM sizes etc. means that there's less of an incentive to run a server farm when you can easily fit 128 peak-performance cores under your desk. Stackoverflow did this/has been doing this model with quite some success.