Take a concrete workload: a web app serving around 300,000 requests a month, a Postgres database under 10 GB, roughly 150 GB of egress, and a 2 vCPU / 4 GB requirement. Here is how the main options price that, and what you give up in each case.
Hetzner's shared-vCPU cloud instances start in the low single-digit euros for the smallest size, with a 2 vCPU / 4 GB instance in the region of €5-7 a month and traffic allowances measured in terabytes. Similar tiers at DigitalOcean, Linode and Vultr sit around $24 for 2 vCPU / 4 GB with 4 TB of transfer included. In all of these, 150 GB of egress is free — it is inside the allowance. Run Postgres on the same box and the total bill is the instance. What you take on: patching, backups, monitoring and being the person who fixes it at 3am.
The equivalent AWS instance costs more per hour than the budget hosts, and then the additions arrive: an EBS volume billed per GB-month, a NAT gateway if your subnets are private (an hourly charge plus per-GB processing, and a frequent source of surprise bills), and egress billed per GB after a small free allowance. That 150 GB of egress alone is roughly $13 a month. A managed database instead of self-hosted Postgres adds $25 upward. Realistically this workload lands three to five times the budget-VPS bill. You are paying for regional redundancy, managed services and an IAM model — genuinely valuable if you need them, pure overhead if you do not.
Fly.io, Render and Railway sit in between. You supply a Dockerfile; they handle build, deploy, TLS, health checks and rollbacks. Expect a small always-on instance in the $5-20 range plus a managed Postgres add-on at a similar level, with egress metered. The saving is not on the invoice, it is that nobody on your team spends a day a month on infrastructure. For a team of one or two, that is usually the decisive number.
The largest saving available is not choosing a cheaper server — it is not needing one. If the public part of the site is content, put it on Cloudflare Pages, where static requests and bandwidth are unmetered on the free plan, and keep a small server only for the dynamic parts. A traffic spike that would cost real money on a metered host costs nothing. This is the single change that most often takes a hosting bill from tens of dollars to near zero.
If nobody on the team wants to be a sysadmin, take the platform tier and treat the premium as salary you did not spend. If you are comfortable in a terminal and the workload fits one machine, a budget VPS with automated backups and an external uptime check is dramatically cheaper and entirely adequate. Reach for a hyperscaler when you actually need its managed services, compliance posture or multi-region failover — not because it is the default answer.