“Should I use serverless or just rent a server?” is really a question about utilisation. Serverless bills for the time you run; a VPS bills a flat fee whether you use it or not. That single difference decides the cheaper option.
The two billing shapes
- Serverless (Lambda, Cloud Run, Workers): pay per request + per GB-second, $0 while idle.
- VPS / always-on instance: a flat ~$4-7/month (and up) regardless of traffic.
When serverless wins
- Low volume — most small apps fit entirely inside a free tier (1M+ requests/month free on Lambda, Cloud Run, Azure, Cloudflare). That’s $0.
- Spiky or bursty traffic — a cron job, a webhook, an occasional API. You pay only for the seconds you run; a VPS sits mostly idle but still bills.
- Unpredictable scale — serverless absorbs a traffic spike automatically; a fixed VPS would fall over or need over-provisioning.
When a VPS (or micro-VM) wins
- Steady, always-on traffic — if a function is effectively busy 24/7, its GB-seconds out-cost a $5 VPS quickly.
- Long-running or stateful work — background workers, websockets, queues.
- Predictable high utilisation — flat pricing beats metered pricing once you’re near full use.
A middle ground worth knowing: scale-to-zero micro-VMs like Fly.io Machines (~$1.94/mo always-on, $0 when stopped) and Render give you VPS-style flat pricing with scale-to-zero.
A rough rule of thumb
| Utilisation | Cheaper option |
|---|---|
| Under ~15-20% (spiky/low-volume) | Serverless (often free tier) |
| ~20-60% (medium, variable) | Depends — model both |
| Near always-on (>60%) | VPS or scale-to-zero micro-VM |
Snapshot captured June 2026.
Bottom line
Don’t assume serverless is automatically the cheap choice — it’s cheap for idle-heavy workloads. For steady load, a $5 VPS or a Fly.io Machine usually wins. Estimate your serverless side of the comparison with the calculator, and see the hidden costs of serverless before you decide.