AWS employee here, so I am obviously cloud provider biased, but in my viewpoint having that discipline only comes from having very good, expensive engineers. It's hard to get people who really know how to run a datacenter well, especially when most of the good ones would probably prefer to work for a larger cloud provider since than is more interesting and impactful than running a smaller datacenter for a single company.
The forgotten / underestimated cost is the salaries of these people to set things up well in the first place, be on call to fix things when they break, and perform those upgrades in the same way that cloud providers do.
A single engineer salary can get you a LOT of cloud compute power on AWS. If a cloud provider allows you to build the same thing with two fewer engineers then that's probably an extra $400k or so for the infrastructure budget after you factor in these engineer's salaries, taxes, benefits, etc. And $400k can get you an incredible amount of AWS cloud compute.
The thing is, you need this equivalently for any cloud provider as well. People who know how to operate and run a cloud account effectively are not a dime a dozen, and given the migration going on now are actually in higher demand than some qualified datacenter operators.
Same goes for backups to S3 vs. setting up a SAN on the datacenter.
Managing AWS infrastructure isn't trivial, it's easy to forget what that instance does, if everything was provisioned with point and click. Cloudformation or terraform makes it doable. But technical debt is also something you can defer payment on :)
Additionally Aurora has robust zero downtime self recovery from a variety of error conditions including disk failures, and you can test that out by running a SQL query that simulates disk failures for example: https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Auror...
This level of operational excellence is incredibly hard to build yourself either on premise or even in the cloud if you are only using VM's. Time and time again you see companies that thought they had backups but then discover the backups don't work right. It's not because these companies are stupid, its because it is hard to do right, and building and testing this requires a lot of engineer time. When you do take the time to hire the right people who can do it right you end up finding it is way more expensive to do it yourself than using a cloud managed service. AWS is able to offer the service much cheaper because the cost of development and maintenance, etc is spread across a huge number of customers.
I'm not saying any of this is necessarily wrong, just not what people often expect when they dump, to them, a significant amount of money into something. Many midsize and larger companies like to "big dog" their vendors. They are not accustomed to the cog in a machine feel that most of us tolerate daily.
It is easy to sit back and say AWS is really easy; but it just means you haven't looked elsewhere.
Additionally most public clouds have law enforcement or government entities monitoring or tracking things (to an unknown scale). You are always better off in a regular datacenter.
If you don't know why maybe you should hire someone to tell you why.
> Free answers are good. But if you want great answers you have to pay.
However AWS allows you to accomodate uneven growth and load. You can create new machines in minutes (or half an hour for Windows). The virtual nature allows you to quickly ditch a broken host for a good one. You can also save money on development infrastructure by switching it off, or run background jobs on spot machines. Then there's the other services available such as S3 and Lambda.
Of course there are other clouds worth considering, but the advantage of cloud infrastructure is the ability to call it up without months of lead time.