You had an app built, or you're about to, and now someone asks where it will run. The hosting world has a hundred vendors but really only three shapes: a VPS you manage yourself, a platform that deploys from your git repo, and serverless functions. Each one is the right answer for somebody. Here is the honest comparison, including the parts vendors don't advertise.
Option 1: A VPS (you rent a server)
A VPS is a virtual private server: a slice of a machine in someone's datacenter that is entirely yours. DigitalOcean, Linode, Vultr, and Hetzner all sell them starting around $5 to $10 a month, and that little box can comfortably run a small business app, its database, and a few side services.
The good: it's the cheapest option at every scale that matters to a small business, and the price is flat and predictable. You can run anything on it: any language, any database, cron jobs, background workers, all on one bill. There's no lock-in; your app is just files on a Linux box, and moving to another provider is an afternoon.
The honest downside: you are now a part-time sysadmin. Security updates, firewall rules, SSL certificate renewal, database backups, disk filling up, and the reboot at 2 a.m. are all your problem. None of it is hard individually, but it's a real, permanent chore, and the failure mode is neglect: the server that hummed along for two years is often two years behind on patches. Tools like Docker and management panels reduce the burden but don't remove it.
Pick a VPS when: you have someone (in-house or hired, this is a lot of what we do) who owns the maintenance, you want low predictable cost, or you need something platforms don't allow, like an odd database or long-running background processes.
Option 2: A PaaS (deploy from git)
Platform-as-a-service means you push code to git and the platform builds, deploys, runs, and scales it. Heroku invented the pattern; today Render, Railway, and Fly.io are the usual suspects, with Vercel and Netlify covering the frontend-heavy version of the same idea.
The good: the ops chore mostly disappears. Patched servers, SSL, deploys, rollbacks, and logs are the platform's job. Deploys become "git push," which means your developer ships more and babysits less. For a small team without a dedicated ops person, this is worth real money.
The honest downside: cost. Entry tiers run maybe $5 to $25 a month, comparable to a VPS, but the curve is steeper: add a managed database, a background worker, and a bit more memory, and you're at several times the VPS price for the same horsepower. There's also mild lock-in, not to your code, but to the platform's way of doing things (their config, their add-ons, their database hosting). And you inherit their limits: free and cheap tiers may sleep your app when idle, and some platforms restrict long-running processes.
Pick a PaaS when: nobody wants to own server maintenance, your app is a fairly standard web app, and paying somewhat more per month to not think about infrastructure is a good trade. For most small businesses with one custom app, this is the default we recommend.
Option 3: Serverless (functions on demand)
Serverless means your code runs only when a request comes in, and you pay per execution. AWS Lambda is the heavyweight; Cloudflare Workers and the function offerings inside Vercel and Netlify are the approachable versions. There are still servers, obviously. You just never see them.
The good: near-zero cost at low traffic. An API that gets a few thousand hits a month can run essentially free. Scaling is automatic: a traffic spike that would flatten a $6 VPS just costs you a little more that month. There is nothing to patch, ever.
The honest downside: it reshapes how the app is built. Functions are short-lived and stateless, so long tasks, persistent connections, and "just write a file to disk" all need workarounds. Your database has to live somewhere else, and wiring functions to databases has its own gotchas. Debugging is harder than tailing a log on one server. Lock-in is the strongest of the three options: an app built around one vendor's functions, queues, and storage does not move casually. And pay-per-use cuts both ways; costs are wonderful at low volume and can get surprising at high volume or with inefficient code.
Pick serverless when: the workload is spiky or tiny (webhooks, scheduled jobs, a lightweight API), or the app was designed for it from day one. This site you're reading runs on Cloudflare Workers, and for a static site with light logic it's a great fit.
The short version
- VPS: cheapest, most flexible, and you own every problem. Best with someone maintaining it.
- PaaS: costs more as you grow, but the ops burden mostly vanishes. Best default for a small team with one standard web app.
- Serverless: nearly free when small, scales itself, but constrains the design and locks you in hardest. Best for spiky or lightweight workloads.
How to know you chose right
Six months in, hosting should be a line item, not a topic. Deploys are routine, the monthly bill doesn't surprise anyone, and nobody is quietly dreading the server because it hasn't been patched since launch. If you're on a VPS nobody maintains, or paying PaaS prices that keep creeping past what a small server would cost, the choice is worth revisiting. Moving between these options is a project, not a crisis, and it's far cheaper than living with the wrong one for years.
Stuck on this, or want it done for you? That's the job.
Email us →