When I first started working as a developer almost 10y ago, we usually had 3 options whenever you needed to deploy a new service: you either manually built an on-premise server locally, or reserve a VM in a data center, or you could do like the cool kids and create an account on AWS and started tweaking. I'm not so sure when or how, but slowly the first two options rapidly "became obsolete"... except that they didn't?
I've been thinking about this for quite some time now. Why did we stop doing like the old way? Was it because of costs? Was it because of technical difficulties? If those are the main reasons, then it doesn't make much sense to me. We still have full devops teams, and multiple startups still pay between 500k to over a million dollars a year in cloud costs (many of them don't even need to).
One can argue that scale is a real issue, and that you can have very cheap costs by using cloud functions or any other serverless options. I kinda agree with the serverless POV, but this feels more like a trap than an actual solution in the sense that CloudFunctions work great but are not full solutions on their own. You'll still have to think about persistence, storage, connections, IOPs, infrastructure in general -- and that's where it gets you. DB, for example, is arguably one of the most expensive things you can get in a cloud environment, even for a small team it can easily surpass the thousand dollar margin if you're not paying full attention to it, or if you choose the wrong costing plan ("easier management" they said...). And when you're already using a cloud function (or any other cloud solution for that matter), it's waaay easier to just use every other service available then coming up with your own solution -- which means you're waay more likely to just use the most expensive solutions (e.g. DB) once you're in.
One can think about this similar to what fast-food chains do: you may pass by a McDonalds and think "I'd love myself some fries". So you go inside, wait in line and just starts looking around and see all those McGigaPound3xCheese4xPattysBurger giant banners all over the place, all the happy families eating burgers in pictures all over the walls, etc etc. Suddenly you think how it's been quite some time since you got one of those or maybe since you're already there maybe you can have one (just one).
That's kinda the same logic here: one SWE knows that serverless are cheap and easy to have something online. But then it needs to have some persistence, or maybe some IOT integration, or maybe some other thing... It's very tempting to use everything you have available, and it's very easy to go bankrupt by going all the way in.
"What about scaling?" you may ask, and first of all one thing that should be pretty obvious by now is that not everyone needs to think that much about scaling. Most of the services out there doesn't even have more than a thousand users a day, which (depending on 1. how your actual software looks like and 2. what's your project) you can possibly run in a single properly set up Raspberry PI -- or if you want to look more "professional" get a 10$ VPS and be happy. So no, usually you do not need to think about scaling that much.
There are some situations where you possibly need to have a good scaling of some sort, ML training is a great example of this (although sometimes grabbing yourself some Nvidia can be cheaper depending on how you use it). There are also some scenarios where cloud can make sense -- if you're as big as a Netflix for example that needs a full data-center in order to be able to provide your service then cloud is probably easier to manage (+ geographic availability). But if you're usecase is just some small SAAS that you really hope that someday will be the next unicorn out there, just be humble and pay 10$ for a VPS instead of going bankrupt before actually start making money. Don't be a fool and don't be a victim of ADs and propaganda.
This is very important for people just joining the area to know. I've met some astounding newbies that had some very good base with Cloud and CloudComputing but had NO IDEA how to actually build anything locally. Which is kinda ok, but it's also very depressing and worrying -- how do you guys think AWS/GCP/Azure works under the hood? Remember kids, cloud is just a local setup elsewhere. If you're not familiar with some simple concepts it may come back to bite you later.