There are three common ways to run an application in the cloud. Each trades control against convenience differently, and their costs behave very differently as traffic grows.

  • VPS — a virtual machine you manage. Fixed monthly price, full control.
  • PaaS (platform as a service) — you push code; the platform builds, runs and scales it. Examples: Heroku-style platforms, Render, Fly.io, Railway, Google App Engine.
  • Serverless functions — you deploy functions that run per request; you pay per execution. Examples: AWS Lambda, Cloudflare Workers, Vercel/Netlify functions.

Side by side

VPS PaaS Serverless functions
You manage OS, runtime, web server, security, scaling Your code and config Your code
Pricing Fixed per month Per instance/container, plus add-ons Per request and compute time
Cost at low traffic Low, fixed Low to moderate Very low (often free tier)
Cost at steady high traffic Lowest per request Moderate to high Can become high
Scaling Manual (resize, add servers) Easy (more instances) Automatic, near-instant
Long-running processes, WebSockets, background workers Yes Yes Limited (timeouts, statelessness)
Custom software / OS access Anything Limited to the platform Very limited
Cold starts None Possible on scale-to-zero Possible
Lock-in Lowest Medium Highest (platform-specific APIs)

How the costs behave

The real difference is the shape of the cost curve.

  • VPS: flat. A server that costs the same whether it serves 10 or 10 million requests a month, until you need a bigger one. Idle capacity is “wasted”, but cheap.
  • PaaS: steps. Each additional instance or larger instance size adds a fixed amount; managed databases and add-ons are often the biggest line items.
  • Serverless: linear with usage. Nearly free when idle, but every request costs something. At sustained high traffic, bills can exceed an equivalent server by a large factor. Egress bandwidth and attached services (API gateways, databases) add up too.

A simple rule: spiky and small → serverless; steady and substantial → VPS; team without ops time → PaaS.

Hidden costs to include

  • Your time. A VPS needs updates, backups, monitoring and security work. Budget a few hours a month — or automate it (see VPS maintenance).
  • Bandwidth/egress. Many platforms charge per GB out; VPS plans usually include a large allowance.
  • Databases. Managed databases on PaaS/serverless platforms are convenient but often the most expensive part; on a VPS you can run PostgreSQL or MariaDB yourself.
  • Observability. Logs and metrics may be billed separately on managed platforms.

Which workloads fit where

A VPS is a great fit for:

  • WordPress and other CMS sites
  • APIs and web apps with steady traffic
  • Anything needing WebSockets, long-running jobs or background workers
  • Databases, Redis, search engines
  • Self-hosted tools (Git, CI runners, analytics, AI models)
  • Game servers, VPNs, bots
  • Predictable budgets

Serverless fits:

  • Webhooks, scheduled jobs, light APIs with irregular traffic
  • Edge logic (redirects, auth checks, A/B tests)
  • Prototypes with near-zero traffic

PaaS fits:

  • Small teams that want git-push deploys without managing servers
  • Apps that need easy horizontal scaling and preview environments

Mixing them

Many teams combine models: the main app and database on a VPS, a CDN and edge functions in front, and serverless for occasional tasks. Tools like Coolify, Dokku or CapRover even give you a PaaS-like workflow on your own VPS — git push to deploy, with the VPS’s fixed pricing.

Summary

Choose a VPS for control and predictable cost at steady load, PaaS for convenience when you’d rather not manage servers, and serverless for spiky, event-driven work. If you go the VPS route, our KVM VPS plans and Docker VPS setup are good starting points; see deploying full-stack projects on a VPS for a workflow.

  • VPS
  • Serverless
  • PaaS
  • Architecture