Just Use a VPS - Midwit Meme

Just Use a (Managed) VPS

April 8, 2024

If you use a cloud service for hosting your website or app, the slim possibility of a nasty surprise bill from your cloud provider is an ever present worry that nags at you constantly. These cloud cost horror stories crop up from time to time in developer circles on Twitter/X, Hacker News, Reddit, and others.

Lately Vercel has been the talk of the town with their recent pricing changes, prompting reaction posts like this:

A bill that increases 15x for the same service is quite a shock, but this is nothing new with serverless hosting setups and cloud hosting providers on a pay per use model.

Cloud Providers Nickel and Dime

The crux of this change with Vercel is that they started metering and charging for things they were not charging for previously – traffic (number of requests) and bandwidth. So while most customers saw their costs decrease under this change, some users saw their bills increase – some of them significantly so.

Cloud providers can be a great way to save some money at the beginning of your project while it is not using many resources (everyone loves that $0.03 AWS bill, right?), but costs can quickly get out of hand as you scale, with no lever to slow it down.

The Reality of Scaling

The reality is that most website growth is slow and predictable. If you are even just casually checking your metrics at least once a week, you will know when you need to scale. You don’t need serverless edge functions on the cloud to do this for you. With any reputable VPS provider, It’s as easy as logging into a control panel and clicking a few buttons to upgrade to a larger instance with more resources.

“Just Use a VPS”

I get it. There is a large difference between the advice “just use a VPS” and doing a “git push” to your favorite cloud provider. You have to choose a linux distribution, SSH into a box, install packages, issue SSL certificates, and configure a bunch of things. This can be daunting if you have never done these things before, and you can easily spend hours reading guides and just trying to get something working. There are tools that can help automate this, like Ansible, Terraform, and Dokku, but those come with their own learning curves and pitfalls as well. Security is a concern too. You can leave some security holes open along the way if you misconfigure things that can end very badly for you sometime in the future. Luckily, there is an affordable middle option here that eliminates most of these concerns.

Just Use a Managed VPS / App Platform

There is a nice “middle of the road” option that, for some reason, does not get a lot of attention in many discussions about how cloud providers over-charge you for compute time and bandwidth. That middle option is a managed VPS. These typically come from providers that also offer bare VPS instances, but they target launching and deploying apps instead of talking about servers or compute units.

Here are a few app platform providers that I know of or have used before that are great alternatives to cloud providers like Vercel and others:

Many of these services can be used for free for hobby projects, or as little as $5 per month for a more reliable always-on VPS instance. For growing projects, load-balanced horizontal scaling and larger instances with more resources can be had for just a bit more, and the costs are always predictable.

I use Render to host my own product, BudgetSheet. It is a Next.js application that I moved over from Vercel almost 2 years ago so I could have longer API runtimes. Since some Plaid APIs can take a while to return with live transaction and balance updates, I was hitting the runtime limits of Serverless functions on Vercel’s platform, even on the Professional paid tier. The only option Vercel offered me for more serverless runtime was to upgrade to the Enterprise plan, which started in the thousands of dollars per month range. My only option was to find another provider.

With Render, I still have “git push” based deployments. I still have preview environments for each pull request (a must for me). I still don’t have to configure or manage my own servers. I no longer have to worry about arbitrary serverless function runtime limits or how much the compute time will cost me. Everything just works, and my costs are steady and predictable. API calls can take as long as they need to, and I don’t have to re-architect my whole application to fit the arbitrary limits of some cloud compute model. I pay about $50 per month for two larger load-balanced instances with Render. My PostgreSQL database is hosted with AWS RDS. My service has never been more solid or reliable as it is now. Getting off Vercel and onto a managed VPS platform was the best hosting/infrastructure decision I have ever made for my project.

Forget the cloud. Just use a managed VPS.


Tags: , , ,

Categories: