VPS vs Serverless: Which Architecture Wins?
VPS vs serverless in 2026: cost, cold starts, scaling, vendor lock-in and the decision framework for your next project.
The “static vs dynamic” decision, modernized: when a $4.49 VPS beats Lambda and when serverless wins on Latency and cost — with a concrete framework.
The honest framing
Serverless is not “hosting without a server”. It is a pricing and scaling model where you pay per invocation, with a lambda that spins up per call. A VPS is a machine you own: fixed cost, fixed capacity, total control.
| VPS | Serverless | |
|---|---|---|
| Base cost | Fixed/month | ~$0 (per-use) |
| Scaling | Manual (or same box) | Automatic to any spike |
| Cold start | No | 50ms–2s |
| Ops burden | You (OS, updates, TLS) | Vendor |
| Lock-in | None (SSH, anything) | High (vendor runtime) |
| Predictable bills | Yes | Can spike |
| Local dev | Trivial | Emulator or less |
When a VPS is the right call
- Steady, predictable traffic — a normal SaaS, a dashboard, an API with known peaks
- Long-running processes — WebSockets, queues, workers, cron (serverless cron is awkward)
- Stateful services — Postgres, Redis, search engine
- You want to own your infra — SSH, debugging, migrations without a ticket
A single Hetzner CX22 runs an entire SaaS (app + Postgres + Redis) for $4.49. That’s the core value: one machine replacing six managed services.
When serverless wins
- Zero-traffic projects — a hobby tool you don’t yet know will be used
- Spiky loads — a scrape/export/chat endpoint invoked 2x a day by 10k users
- Global edge functions — per-region latency with Cloudflare Workers
- Prototypes — deploy in seconds, pay nothing while idle
The hybrid that most people actually want
Static frontend + serverless API calls + a small database
- Vercel/Cloudflare Pages for the UI: $0 at rest
- Workers/Functions for the API: $0–5 at low volume
- Managed Postgres (Neon/Supabase free): $0 until it grows
This gets 95% of a SaaS to live production for $0/month — and the moment you have steady users, a VPS monolith ($5) costs less per request than any pay-per-invocation platform.
Decision framework
Do you have predictable traffic? → VPS ($5–10/mo fixed)
Is traffic near-zero or spiky? → Serverless (pay per use)
Do you need WebSockets/workers? → VPS (serverless makes this hard)
Is global edge latency critical? → Workers (serverless)
Do you hate tickets & limits? → VPS (you own it all)
Cost comparison (real example: 5k requests/day)
| Setup | Monthly cost | Cold starts? |
|---|---|---|
| Hetzner CX22 (app + db + redis) | $4.49–5 | No |
| Vercel + Neon + Auth.js | ~$0–5 | Yes (free tier) |
| Lambda + RDS + API Gateway | $15–40 | Yes |
Serverless famously becomes the expensive option around a few million requests — while a VPS is flat forever.
Common problems
- Serverless bills after an incident: a buggy loop with 10M invocations is a real invoice. VPS billing caps the damage.
- Cold starts wreck chat apps: streaming UX + 1.5s cold start = users leave.
- VPS called “risky”: it isn’t — it’s a machine you control, with offsite backups.
Our recommendation
Start serverless if traffic is zero; move to a VPS monolith the week you see steady users. That one migration (docker compose up on a $4.49 box) is cheaper than the serverless bill difference in a single bad month.