VPS vs PaaS vs Serverless: What Should a Startup Actually Run On?
Cloud

VPS vs PaaS vs Serverless: What Should a Startup Actually Run On?

Pick based on the shape of your cost curve, not on what's trendy this month. A VPS, a managed PaaS, and serverless don't compete on price — they compete on where the bend in that curve sits.

Published September 12, 202611 min readUpdated Sep 6, 2026

Written by · Full-Stack Agentic AI Software Engineer — AI Agents, Automation & Revenue Systems for GTM/RevOps teams

In brief

Should a startup run on a VPS, a managed PaaS, or serverless?

It depends on where your traffic sits relative to each option's cost curve, not on which one is currently fashionable. A VPS is flat — one price regardless of usage, until you outgrow it and step up a tier. A managed PaaS like Render or Railway is stepped — a base plan plus metered resources on top, less control than a VPS, less operational work too. Serverless is per-invocation — nothing when idle, real cost per request, no ceiling if traffic spikes. For a bootstrapped or early-stage startup with any DevOps willingness at all and traffic that's starting to look predictable, a self-hosted VPS behind Coolify or Dokploy is the default: the flattest curve, the fewest surprises, and the lowest floor. Serverless earns its place pre-product-market-fit or for genuinely spiky workloads. Managed PaaS is the right middle ground for a team that wants zero server management and can tolerate a usage-based bill that isn't flat but also isn't Vercel's meter count.

  • A VPS has a flat cost curve — the same $7-25/month whether traffic is 100 requests or 100,000, until it's undersized and you step up a tier
  • A managed PaaS like Render or Railway has a stepped curve — a base plan plus metered CPU, RAM and egress on top, trading some cost predictability for zero server management
  • Serverless has a per-invocation curve with no ceiling — nothing when idle, real cost per request, which rewards spiky traffic and punishes steady, high-volume traffic
  • Cold starts are close to irrelevant on a VPS or a PaaS's always-on instance and are the one operational cost serverless still carries, even with modern warm-instance strategies
  • Vendor lock-in runs opposite to convenience: a VPS with plain Docker is the most portable, serverless's platform-specific primitives (ISR, edge runtime APIs) are the least

Evidence notes

Vercel pricing page

The serverless reference point for per-invocation, per-duration billing used throughout this comparison.

Render pricing

Always-on Starter web service at $7/month; Standard tier at $25/month — the managed PaaS reference point.

Railway pricing

Usage-based billing on top of a $5 or $20 plan minimum, metered per second at $20/vCPU-month and $10/GB RAM-month.

Contabo VPS pricing

Flat-rate VPS reference point: Cloud VPS 4, 4 vCPU / 8GB RAM / 100GB SSD, at €5.50/month for the first 24 months, checked against Contabo's own pricing page in September 2026.

Pick based on the shape of your cost curve, not on what's trendy on Twitter this month. VPS, managed PaaS, and serverless don't compete on price — they compete on where the bend in the curve sits, and most "which should I use" arguments miss that entirely because they compare a single month's bill instead of the shape the bill takes as traffic changes. A flat curve and a stepped curve and a per-invocation curve can all land on the same number in one specific month and diverge wildly the month after. Founders keep re-litigating this argument as if it were a taste question — Vercel versus a VPS, framed like a preference — when it's actually an arithmetic question with a knowable answer once the traffic pattern is known. Here's the actual three-way comparison, and a verdict at the end that picks one as the default, because a comparison that refuses to pick is worse than no comparison at all.

What does each one's cost curve actually look like?

A VPS is flat. A Contabo Cloud VPS 4 box at €5.50/month for 4 vCPU, 8GB RAM and 100GB SSD — that price good for the first 24 months, not indefinitely — costs exactly that whether it serves a hundred requests a day or a hundred thousand, right up until it runs out of capacity — at which point the cost doesn't creep, it steps, straight to the next tier's price. A managed PaaS like Render or Railway is stepped in a gentler way: a base plan (Render's always-on Starter service is $7/month, Railway's Hobby plan is $5/month with $5 of usage included) plus metered CPU, RAM and egress layered on top, so the bill moves with usage but inside a band, not in a straight line from zero. Serverless has no floor and no ceiling — Vercel's function billing charges for active compute time and invocations that actually happened, nothing when the app is idle, real money per request when it isn't. Three genuinely different shapes, and the right one depends entirely on which shape matches your actual traffic pattern, not which one sounds more modern. Where VPS vs PaaS vs serverless meets a revenue team, the practical guidance lives with the XenGrowth practice.

Dimension

VPS

Managed PaaS

Serverless

Cost curve shape

Flat — same price regardless of usage, until it steps to the next tier

Stepped — base plan plus metered resources on top

Per-invocation — zero when idle, unbounded with real traffic

Typical entry price

$7-25/month for a capable single server

$5-25/month base, plus usage

$20/seat plus a usage credit, then metered overage

Operational burden

Highest — you own the OS, patching, and the deploy pipeline (or layer Coolify/Dokploy on top)

Low — the platform manages the server; you manage the app config

Lowest — no server exists to manage at all

Scaling behavior

Manual, or self-built autoscaling across multiple boxes

Often automatic within the plan's ceiling

Automatic and effectively unbounded by design

Cold starts

None — the process is already running

None on an always-on instance; possible on scale-to-zero tiers

Real, though warm-instance strategies reduce frequency

Vendor lock-in

Lowest — plain Docker runs anywhere

Moderate — mostly portable containers, some platform config

Highest — platform-specific primitives like ISR and edge runtime APIs

Best-fit stage

Predictable traffic, any DevOps willingness

Zero ops appetite, willing to trade some control for convenience

Pre-product-market-fit, or genuinely spiky traffic

What happens to each curve as traffic actually grows?

The table above shows the shape; this is what that shape does as traffic moves from a trickle to something real. It's directional, not a precise forecast for any specific app — the point is which curve bends, not exact dollar figures, since that depends entirely on your own resource use. For the the operations side of this angle, see The XenGrowth resource library.

Traffic level

VPS

Managed PaaS

Serverless

Early, low traffic

Comfortably inside the entry-tier box (Contabo's Cloud VPS 4 at €5.50/month for the first 24 months, for instance)

Comfortably inside the base plan (Render's $7/month Starter, Railway's $5 Hobby credit)

Comfortably inside the $20 seat's usage credit

Steady growth

Same box, unless a specific resource (usually RAM) becomes the bottleneck first

Metered CPU/RAM/egress usage starts pushing toward the next plan tier

Credit exhausted; metered overage begins on whichever meter moves fastest — often invocations or ISR writes

Real scale

One deliberate step to a larger VPS tier, then flat again at the new price

A meaningfully higher metered bill, but still bounded by the plan's own structure

Overage compounds across several meters at once — the least predictable of the three at this stage

How much does operational burden actually differ between the three?

A raw VPS is the most work: you own the operating system, the firewall, the reverse proxy, the deploy pipeline, and every patch that ships for any of it — securing the box before anything else touches it is the first item on that list, not an optional one. A self-hosted PaaS layer like Coolify or Dokploy absorbs a lot of that without leaving the VPS model — Coolify vs Dokploy covers which one fits which situation — but the underlying server is still yours to patch and back up. A managed PaaS removes the server from the equation entirely: no OS to patch, no firewall rules to write, in exchange for less control over exactly how the app runs and a bill that moves with resource use rather than staying fixed. Serverless removes the most work of all — there's no always-on process, no capacity to size, nothing idling — but it replaces that operational simplicity with a different kind of attention: watching per-request cost the way you'd otherwise watch server load.

Do cold starts actually matter for a startup's users?

On a VPS, the answer is simple: there's no cold start, because the process is already running and stays running. An always-on managed PaaS instance behaves the same way; scale-to-zero tiers on some PaaS products reintroduce the problem the moment traffic resumes after idling, which is worth checking explicitly before assuming a PaaS plan is always-on by default. Serverless carries the real version of this cost, though it's smaller than its reputation — Vercel's Fluid compute model reuses warm function instances across nearby requests rather than cold-starting every single invocation, which meaningfully reduces how often a user actually experiences the delay. It doesn't eliminate it. For a marketing site or a low-traffic internal tool, an occasional cold start is invisible. For a product where every response is on the critical path of a user actually completing something — checkout, a live editing experience, anything real-time — that occasional delay is the kind of detail that decides the column, independent of everything else in this comparison. XenGrowth on governed AI marketing workflows goes further into AI agents and marketing automation.

How much does vendor lock-in actually cost you later?

A VPS running plain Docker containers is close to fully portable — the same Compose file runs on Contabo, Hetzner, or a laptop, and switching providers is a DNS change and a `docker compose up`, not a rewrite. A managed PaaS sits in the middle: most of what runs there is still a container or a standard buildpack, but the platform's own config format, environment variable handling, and deploy hooks are specific enough that moving off isn't free, even if it isn't a rewrite either. Serverless carries the most lock-in of the three, and it's not really about the code — a Next.js app runs anywhere — it's about the platform-specific primitives a team ends up depending on once they're actually using the platform well: incremental static regeneration tied to that platform's cache semantics, edge runtime APIs that don't have an identical equivalent elsewhere, image optimization behavior baked into how `next/image` resolves on that specific host. None of that is locked in on day one. It accumulates, one convenience at a time, and the bill for reversing it only shows up the day you actually try to leave — usually as a rewrite of exactly the parts of the app that were the easiest to build in the first place, which is a frustrating kind of debt to discover you're carrying.

  • A VPS's lock-in is close to zero — the constraint is your own willingness to run infrastructure, not the platform

  • A managed PaaS's lock-in is mostly in configuration and deploy hooks, not in the application code itself

  • Serverless's lock-in accumulates through platform-specific features adopted one at a time, not through a single decision

  • The true cost of lock-in isn't paid while you stay — it's paid entirely on the day you try to leave

Which stage of company actually fits which option?

Pre-product-market-fit, when the constraint is weeks and not dollars and the traffic pattern isn't understood yet because it doesn't really exist, serverless is defensible — the specific conditions where that's true are worth reading before assuming it applies by default. Once traffic starts to look predictable — a SaaS with a stable base of paying customers, a content site with a traffic pattern that repeats week over week — a flat VPS cost usually beats a metered one, because a curve that doesn't move is easier to budget against and, at real volume, cheaper per request than any of the metered alternatives. A managed PaaS is the right stage for a team that has outgrown "we'll figure out ops eventually" but genuinely doesn't want to own a server — not because they couldn't learn it, but because the time is better spent elsewhere and the stepped cost curve is an acceptable trade for that. XenGrowth on building one SEO and GEO content system covers the AI search, GEO and discovery side of this.

  1. Do you know your traffic pattern yet, even roughly? If no, don't optimize cost — optimize for shipping fast and revisit once you do.

  2. Is traffic steady or spiky? Steady traffic favors a flat curve; spiky traffic favors per-invocation billing.

  3. Does anyone on the team have, or want, any ops appetite at all? Zero appetite rules out a raw VPS, though not necessarily a self-hosted PaaS layer on top of one.

  4. How much does a cold start actually cost you — is a delayed response invisible, or does it sit on a path a user notices?

  5. How much do you actually care about being able to leave a platform later? Weight vendor lock-in accordingly, not as an abstract principle.

The three options aren't ranked best to worst. They're ranked by which cost curve matches a traffic pattern you either already have or don't have yet — and most of the bad decisions in this space come from picking the curve before anyone checked which shape the traffic actually is.

So what should a startup actually run on?

Default to a self-hosted VPS behind Coolify or Dokploy the moment traffic is predictable enough to size one with any confidence, and there's real willingness on the team to own it — the flat curve is the cheapest one at real volume, and how far a small VPS actually stretches before it needs to step up is further than most people assume going in. Use serverless specifically pre-product-market-fit, or for a workload that's genuinely spiky rather than merely unpredictable-sounding — the difference matters, and the honest cases where that's the right call lays them out without pretending they cover everyone. Reach for a managed PaaS as the deliberate middle option for a team that wants zero server ownership and can tolerate a stepped, usage-based bill in exchange — not as a permanent default, but as a real answer for teams whose actual constraint is people-hours, not money. The mistake isn't picking any one of these; it's picking one out of habit and never checking whether the traffic pattern that justified it originally is still the traffic pattern you actually have now.

Further reading from XenGrowth

Where this work meets go-to-market

If VPS vs PaaS vs serverless is part of a growth programme rather than a standalone build, XenGrowth's growth engineering practice is the companion reading.

Which cost curve matches your startup?

Five questions about your traffic and your team's ops appetite, not about what's fashionable this month. It follows the same reasoning as the post — the shape of the cost curve should match the shape of your actual traffic.

1 / 5
Do you know your traffic pattern yet, even roughly?

Apply this article

How to turn insights into execution

A practical sequence for teams turning concepts into production outcomes.

VPSPaaSServerlessStartup InfrastructureCloud Architecturecloud

Audit your current state

Map the bottlenecks and constraints connected to the article’s core problem.

Choose one bounded change

Test the most useful recommendation on one workflow before widening the scope.

Measure what changed

Keep the parts that improve the work, document what failed, and make the next decision from evidence.

Next step

Need help applying this in your stack?

I can translate these patterns into a concrete implementation plan for your team.

Discuss implementationBack to blog

Replies usually within 24 hours.

Next Steps

Continue reading

Coolify vs Dokploy: Which Self-Hosted PaaS Should You Run in 2026?

I run Coolify on my own box and I'd still tell most people starting today to look hard at Dokploy first. Here's the actual decision, not a feature-for-feature tie.

Navigate

Kubernetes vs. Serverless for AI Workloads: A Practical Comparison

GPU scheduling, cold starts, and autoscaling break serverless assumptions. Learn when Kubernetes is mandatory for AI—and when it's overkill.

Navigate

When to Use Serverless, Containers, or Both

Serverless versus containers isn't really a technology debate — it's a workload-shape question. Here's how to make the call based on what the team can actually sustain.

Navigate

10 Mistakes That Break a Self-Hosted SaaS

None of these ten show up as a single dramatic outage. They show up as a disk that quietly fills, a rollback that turns out to be impossible, a backup nobody ever restored. Here's the mechanism behind each one, and the fix.

Navigate

The Backup Strategy Every Self-Hosted SaaS Needs (3-2-1, Applied)

3-2-1 is easy to nod along to and easy to get wrong in the specific way that only shows up on the day you need it. Here's what it actually means for one VPS running Postgres and Docker volumes, not the generic version you've already skimmed past twice.

Navigate

Managed Postgres vs Self-Hosted: Supabase, Neon and a VPS Compared

Supabase bills you for compute whether anyone's querying it or not. Neon bills you almost nothing until someone is, then charges for the second it takes to wake up. A VPS charges you the same either way and hands you every operational job both of the others do for you. None of these is the right answer by default.

Navigate

My Rule for Deciding What to Self-Host and What to Keep Paying For

Self-hosting everything is a bad idea, and I can point to the exact service where I decided that on purpose. Here's the actual rule I use, not a survey of options — and the one counterexample that explains why the rule exists.

Navigate

The Simplest Production Architecture for a Bootstrapped SaaS

One box, a handful of managed pieces around the edges, and a very short list of things you're not allowed to build yet. Here's the architecture, priced out to $20 a month, and the exact signal that tells you when to add each thing you skipped.

Navigate

Moving a SaaS Off Vercel to a €5.50 VPS: What the Numbers Actually Look Like

Nobody publishes their real Vercel invoice, so most migration posts trade in vibes instead of arithmetic. This one builds the comparison from Vercel's and Contabo's own published rates, states every assumption out loud, and shows exactly where the two lines cross.

Navigate

My Free Monitoring Stack for Self-Hosted Apps

Vercel gives you monitoring whether you ask for it or not. A VPS gives you a blank terminal and the assumption you'll figure it out. Here's what to actually watch on a self-hosted box, with tools that cost nothing, and why watching from the box itself is the one setup that will lie to you.

Navigate