← ALL POSTS
CUSTOM SOFTWARE EXPLAINER

Where to host your app: VPS, PaaS, or serverless

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

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 →
RELATED READING
Adding AI to your app without the hype Explainer
Set up CI/CD with GitHub Actions Step-By-Step Guide
Rescuing legacy software: modernize without the rewrite Explainer
Native, React Native, or just a good website? Explainer
Testing that fits a small app budget Explainer
NO FORMS. JUST EMAIL.
mason@hurbs.io
or (832) 457-4317, LA and Houston