The difference between self hosting and running in "the cloud" is that when there's an error in "the cloud", you can't do anything about it ... But full stack debugging can even make a greybeard cry.
“The cloud” makes it easier to build an architecture with multiple failure domains. You don’t want to be debugging in an emergency, you want to be hitting the failover button.
I think hiring dedicated servers or VPS is a nice middle ground between self hosting and all out "cloud" cough lock-in. The cloud services do the failover and auto scaling for you, but often when something goes down it turns out they didn't even have any backups and all your data will be lost unless you actually backed it up yourself.