Recently, I've been doing some shopping around for a new way to host my toy projects. I've used a variety of solution but always had a soft spot for Heroku. Heroku is a Platform as a Service (PaaS) that has been receiving a lot of negative attention recently. In summary, there was a vulnerability in Heroku's GitHub integration that made it susceptible to bad actors that seemed to be persistently inside Heroku infrastructure.
While anyone can fall victim to attacks like this, the recent Heroku outages prompted hobbyists, including myself, to look for some alternatives. A series of Hacker News threads sparked discussion for prominent replacements in the current web ecosystem.
The first thing to consider is my relationship with Heroku. What are the key pros and cons of the service? Two things I have on the platform include http://www.whenisgooder.com/ (a simple meeting scheduling tool) and the backend for https://wordle-mosaic.herokuapp.com/ (my buddy Nathan built the frontend). Building these I formed some surface level opinions.
- Ease of deployment
- Long term robustness
- Continuous Delivery (CD)
- A bit expensive ($8/mo just for the privilege to be always-on?)
- Manual management of SSL certificates
You can tell from this pros and cons list that I never developed any deep emotional connections with the service. But this makes sense. When I Build WhenIsGooder, I had no idea what Gunicorn, CD, or containerization were. My only interest was not having to fiddle with nginx configurations that take longer to set up than the app took to build. HN has great insights into the advantages of other platforms over Heroku and relative to one another.
"Heroku is easy to use compared to AWS, but our customers tell us Render is even easier."
"Heroku pricing is prohibitively high. Heroku customers... see cost reductions of over 50% after switching to Render"
These are two great advantages over Heroku's offerings, but obviously Render won't point out where they fall short. HN discussion illuminates that Render can be nonflexible for region management, ACL management, and strange errors when a lot of data is being sent over HTTP. Render is aware of these issues and we can see their CEO responding to all of these complaints and getting actional feedback for the platform. While I didn't choose Render for my latest project util.fyi, they seem like a great alternative.
Digital Ocean App Platform
I've used Digital Ocean (DO) Droplets in the past and had a very smooth experience. For their App Platform, DO advertises competitive offerings to other alternatives in this list and carry the boon of being an established company. The same developers that avoided Render due to region management difficulties ended up selecting DO instead.
There are some complaints regarding build times, so if you find yourself deploying many times a day, DO might not be your top choice. Users also comment on how DO App Platform is a bit more hands on than Heroku, which can be a pro or a con depending on how much customizability you need for your work.
I really like fly.io's name so they already have an advantage in my mind. Perception of fly is really positive across HN, with one user commenting "fly.io is great! Very generous free tier, and it feels as magical as Heroku did when I first used it years ago."
fly's free tier listing really is generous - offering 2,340 hours of VM time every month corresponds to 3 shared CPUs running at once, most certainly blowing something like Google Cloud Platform out of the water on pricing.
Key callouts in favor of fly are once again related to regional customizability. While this has never been a particular focus for me with my mini projects, this is clearly a top priority for many people who are placing their livelihood in the hands of these platforms. One user does note, "The one reason I'll stay with Railway over Fly is that Fly is not as flexible with diverging CPU/memory requirements."
To launch util.fyi, I ultimately settled on Railway. The incredibly simple deployment scheme pulled me in and when I rolled out their demo flask app in under 60 seconds I was immediately hooked. While Railway also had some issues with build times, I appreciated how they automatically generated an SSL certificate for my domain with no additional configuration required.
I'm looking forward to expanding my footing in Railway's offerings. I'm particularly interested in experimenting with environment management for even my toy projects. The UI is clear, to the point, and almost cathartic to use.
Overall, the decision between many of these prominent PaaS solutions is probably arbitrary for the scale I am working at. I do hope that this quick overview for the space can help you make the most educated decision on finding something that works for you. If this article helped you or you have any recommendations for a future writeup, contact me on social media!