Most cloud providers have a similar offering to AWS Lambda, plus it is not that hard to convert your code from the event handling pattern impose by AWS Lambda to a long running container running in K8s or VMs like you are doing yourself

IMO the lock-in fear is overblown as the top cloud offerings (S3, Lambdas, K8s as a service etc) are already commoditized among the top providers, the exception being specialized databases like DynamoDB, Spanner, Cosmos …

Not saying there wouldn’t be some major work to switch your operations from eg AWS to GCP, but it is also not a hard lock-in

Most cloud providers have the same exact issue that AWS has: they're US based.

Not Hetzner tho

I hesitate to call Hetzner "cloud". Hetzner is an EC2+S3 competitor, not an AWS one. IMO the minimum for being a real cloud is you need hosted Postgres, hosted Kafka, hosted Kubernetes, and S3-compatible object storage. Without the first three Hetzner is just not in the same product category. Nobody sensible buys AWS for the comically overpriced EC2.

Another missed component is a real autoscaling load balancer. This often gets missed and taken for granted. Possibly due to if you haven't seen a good one (AWS) you might not realise what you're missing. Most aspiring "cloud" companies have fixed capacity single tennant load balancers which is not cloud in any definition.

Is it so hard to wire up some health/load checks and hook the provider API to spin up more VPS?

Is it really so much cheaper to pay for "hosted" apps rather than just plumbing your own on VPS/metal?

It's far cheaper to do it yourself, but the entire point is that you outsource the management of the service. Lots of people don't want to deal with database failovers, or - god forbid - deal with Kubernetes control plane issues.

On the opposite, it is more expensive, and any large enough company should probably at least consider renting metal rather than services. For a small org, though, it lets you avoid a lot of infrastructure/ops work.