Jonkai Ventures · Field notes
A comparison · 2026
A practical comparison

Cloudflare
edge vs
a VPS.

For anyone still sizing boxes, patching kernels, and quietly hoping their single server doesn't fall over on a Tuesday afternoon.

Written for My brother
Read time ~8 minutes
Verdict It's not close
Prologue00

The short version.

A VPS gives you a computer. Cloudflare gives you a platform. With a VPS you rent a fixed-size box in one datacenter and wire everything else together yourself — web server, database, object storage, cache, queue, TLS, DDoS protection, backups, monitoring, log rotation, kernel patches. With Cloudflare's edge you get those pieces as managed, globally-distributed primitives that run in 330+ cities, scale to zero when idle, and deploy on git push. The workload is the same; what changes is how much of your time goes into plumbing instead of product.

The core shift

On a VPS, your code lives in one place and users come to it. On Cloudflare, your code lives everywhere and runs next to whichever user happens to be asking. That single change ripples through cost, latency, scaling, and how much ops work you sign up for.

Part One01

The building blocks.

Each row pairs a Cloudflare primitive with what you'd have to assemble yourself on a VPS to get similar behaviour.

Workers
Compute at the edge
Cloudflare

Serverless functions running in V8 isolates across every Cloudflare datacenter. No containers to boot, no cold-start tax worth mentioning (~5 ms). Your request is handled in the city closest to the user. Scales from 0 to millions of requests automatically. Free tier covers 100k requests/day.

On a VPS

You run Node/Python/Go behind Nginx on one machine, in one region. Need redundancy? Stand up a second box, a load balancer, configure health checks, and accept that users on other continents still eat the round-trip latency to your single region.

Pages
Static + dynamic hosting
Cloudflare

Connect a GitHub repo, push, deploy — globally, instantly. Preview URLs for every branch, atomic rollback, custom domains with automatic TLS. Integrates natively with Workers for the dynamic bits. Free for unlimited sites.

On a VPS

Nginx configs, certbot for TLS (and remembering to renew), a deploy script or GitHub Action that rsyncs a build directory somewhere. Branch previews? That's a weekend project. Rollback? Hope you kept the previous build.

D1
SQLite at the edge
Cloudflare

Serverless SQLite, exposed over HTTP, with read replicas in multiple regions. You write normal SQL. Cloudflare handles replication, backups, point-in-time recovery. Free tier: 5M reads/day, 100k writes/day. Perfect for most web apps.

On a VPS

Install Postgres/MySQL, size it, tune it, back it up (pg_dump on cron, hope the disk doesn't fill), configure replication if you ever want redundancy, patch CVEs. Forget to rotate the superuser password and you'll find out on Shodan.

R2
S3-compatible object storage
Cloudflare

S3 API compatibility with zero egress fees — this alone saves most teams serious money. Use for static assets, backups, user uploads, media. 10 GB free per month. Pairs with Workers to generate signed URLs or transform images on the fly.

On a VPS

MinIO self-hosted (another service to run), or S3 itself (where AWS bills you per GB egressed). On a VPS, serving files directly eats your bandwidth quota and your CPU.

KV
Low-latency key-value
Cloudflare

Eventually-consistent key-value store optimised for reads. Reads served from the edge cache at single-digit milliseconds. Great for feature flags, session data, config, rate-limit counters. 100k reads/day and 1k writes/day on the free tier.

On a VPS

Redis on the same box (single point of failure), or a managed Redis (separate bill, separate network hop). Either way, you maintain it and back it up.

Queues
Async message passing
Cloudflare

Durable message queues that trigger Workers as consumers. Retries, dead-letter queues, and batching built in. Use it for email sending, webhook fanout, background jobs, cron-like pipelines without the cron server.

On a VPS

RabbitMQ, Redis streams, or SQS. Another service to run, monitor, and tune. Or worse — synchronous work blocking your web request because you never got around to adding a queue.

Vectorize
Vector DB for AI & RAG
Cloudflare

Managed vector DB for embeddings and similarity search. Integrates with Workers AI (Cloudflare's inference platform) so you can build RAG, semantic search, or recommendations without leaving the edge. Storage and queries billed per use.

On a VPS

pgvector on Postgres, Qdrant, Weaviate, or Pinecone. Any of those is another service to host or another vendor bill to manage. On a VPS, GPU inference also means renting a separate GPU box.

CI/CD
GitHub, zero-config
Cloudflare

Connect the repo once. Every push to main deploys to production; every PR gets its own preview URL. Environment variables and secrets managed in the dashboard. No runners, no YAML gymnastics, no self-hosted Jenkins, no "why did the deploy hang for 40 minutes."

On a VPS

Write a GitHub Action that SSHs into the box, pulls git, runs a build, restarts a systemd unit or docker-compose, and hopes nothing was in flight. Or maintain Ansible playbooks. Either way — more YAML, more secrets, more maintenance.

Part Two02

Where the trade-offs actually live.

Zoom out from individual products and the pattern is clear: the edge model wins on everything that scales with success or with failure. The VPS wins only when you specifically need a persistent box — which is rarer than most devs think.

Dimension Cloudflare edge On a VPS
Latency model
Code runs in 330+ cities, close to the user. Cold start < 5 ms.
Single region. Users on other continents pay the round-trip tax every request.
Scaling
Scales to zero and to millions of requests automatically.
You size a box. Either you overpay for idle headroom or you fall over on a spike.
Ops surface
No OS, no SSH, no patches, no fail2ban, no logrotate.
You are the sysadmin. Kernel updates, certs, firewalls, backups — all yours.
Security posture
DDoS, WAF, TLS, bot management included by default.
You configure it. One forgotten ufw rule is a bad week.
Deploy model
git push → live on the edge in seconds. Instant rollback.
SSH + rsync / Docker / Ansible / systemd. Deploy scripts nobody wants to touch.
Pricing shape
Pay per request. Idle costs nothing.
Pay 24/7 whether traffic is 0 or 10k req/s.
Global data
D1 read replicas, KV, R2 — globally distributed primitives.
One Postgres on one disk in one datacenter. Replicas are your problem.
Blast radius
A Worker crash affects one request. Node dies → traffic routes elsewhere.
The box goes down → the site goes down. Full stop until you fix it.
Part Three03

What it actually costs.

VPS pricing is flat and predictable. Edge pricing is usage-based and starts free. The interesting line is what happens when traffic is either very low or very high — both cases favour the edge.

Idle site
~5k req/day
VPS
€6–15/mo
always on
Cloudflare
€0
within free tier
Medium site
~1M req/month
VPS
€15–30/mo
+ DB, storage, backups
Cloudflare
€0–5/mo
Workers $5 plan covers it
Popular site
~20M req/month
VPS
€40–80/mo
+ scaling headaches
Cloudflare
€15–25/mo
no scaling work
Traffic spike
×100 overnight
VPS
Box dies
or you overpaid all year
Cloudflare
Absorbed
pay for what you used
A hidden line item

On a VPS, your time is the invisible cost. Every hour spent chasing a kernel panic, renewing certs, or fighting a disk-full alert is an hour not shipping product. For a solo dev or a small team, that's the real bill.

Part Four04

When a VPS still makes sense.

This isn't religion. There are legitimate reasons to keep a VPS, and pretending otherwise would be dishonest.

  1. Long-running processes.

    Workers have request-time limits. If you need a daemon that sits on a websocket for hours, a VPS (or Durable Objects, which cover many of these cases) is the answer.

  2. Heavy local compute.

    Video transcoding, ML training, big batch jobs — none of that belongs at the edge. A VPS or a dedicated GPU box is still the right tool.

  3. Software that demands a filesystem.

    Legacy apps, niche databases, anything that writes to /var/lib and expects it to still be there tomorrow.

  4. You genuinely enjoy sysadmin work.

    Some people do. No judgement.

  5. Data sovereignty constraints.

    If regulation forces you to a specific country or a specific disk, Cloudflare's distributed model can complicate compliance.

A hybrid is often the answer

For most portfolios, the question isn't "VPS or edge?" — it's "which workload belongs where?" Put the website, API, static assets, queues, auth, and database on Cloudflare. Keep a small VPS for the one batch job that truly needs it. You'll cut the bill, cut the ops surface, and stop worrying about the single box.

Epilogue05

The bottom line.

A VPS made sense when the alternative was a rack in a colo. It's a computer in the cloud — better than owning hardware, but still a computer that you personally are responsible for. Cloudflare's edge is a different category: managed primitives that run close to your users, scale automatically, and let you focus on the product instead of the plumbing.

The migration is almost always easier than people expect. Start with one small site — push it to Pages, move its database to D1, put its assets in R2. Within an afternoon you'll notice two things: it's faster, and you stopped thinking about it.

— with love, from the edge.
Prepared by Jonathan · Jonkai Ventures OÜ · Monza