Best PaaS backend hosting: Heroku vs Render.com vs Fly.io vs Railway.app

Best PaaS backend hosting: Heroku vs Render.com vs Fly.io vs Railway.app
Photo by Nubelson Fernandes / Unsplash

This post dedicated for fast start with free tier and "pay as you grow" when time is up, and you prefer to focus on code with heavy PaaS lifting. If you just starting a new project and can spend your time for cloud configuration - welcome to AWS, Azure, GCE and many cloud alternatives with free tier and high chances for gigantic bill. Free tier is absolutely necessary: impossible to say service is worthy or just a scam, how fast is networking, database; observe the reliability in general.

Heroku

The rock star of 00s, don't need any promotion anymore. Super easy deploy and configuration. The inventor of git push -> successful build -> deploy magic. Heroku was acquired by Salesforce and, despite huge success, something bad happened with the whole project. Hard to say what exactly, in my opinion Heroku lost its momentum. When you're doing one business very well, still doing it in similar manner for years without major improvements - degradation is inevitable. Let's check the changelog, skip Ruby and PHP stack updates and discover the last big features arrived in 2017. Some rumors said Heroku sunset and full rebranding to Salesforce is close, but I think Heroku will be with us for a long time just 'cause still generate a lot of money.

Heroku dashboard

Heroku Free Tier: docker/buildpacks, 512 MB RAM, 2 TB traffic, no SSL certificate, 500 free hours plus 500 for credit card verification.
Databases: native Postgress, Redis and third-party, not affiliated with Heroku, MySQL addons: JawsDB and Clear DB.

Good resources for small application, no credit card needed for start (can be added to get more hours and DB addons), adventures begins if non-Postgres database is needed 'cause JawsDB/Clear DB free plans will cut the performance with 5 MB DB size and 10 connections only. App "sleeps" after 30 minutes of inactivity, this can be solved by any of billion web monitoring service. There's no permanent storage, application cache & downloads & not included in buildpack/Docker container data will be lost after automated daily cleanup. Database together with S3-compatible storage must-have here, adding their support for some applications can be a very tricky task. Performance is very good with comparison to similar services, each instance (called "dyno") equipped with 4 cores vCPU. SSL certificate not available for free, Let's Encrypt certificates aren't allowed to use on free plan but don't need to give up early - put Cloudflare (free plan) on front and problem solved, even more, you can get HTTP/2 support and IPv6 for your application.

Verdict: still good choice.

Render.com

Startup Battlefield at Disrupt SF 2019 winner, at the first sight looks much more advanced than Heroku: global CDN, free SSL certificates and private networks. Should all folks just migrate to Render.com from Heroku? Definitely nope, a lot of nuances below.

Render dashboard

Render.com Free Tier: docker/templates, 512 MB RAM, 100 GBB egress traffic +HTTP/2, SSL cert, 750 hours/month, free SSL certificate, CDN.
DB: native Postgres and Redis, no MySQL database but can be deployed as Docker container.

Render allow you to start without a credit card, like Heroku, but force you to add it if you need a database. Warning: Postgres database will be removed after 90 days in free plan - really shitty move from Render. Private networks are an interesting feature, some services can be available only inside a virtual network.

UI is nice, easy to set up anything, cool free metrics graphs with network, CPU and bandwidth usage. Can say the same about logs, search option is huge bonus. Docker deploy way easier than Heroku, a lot of options like custom run command, Dockerflile paths, context directory etc. Persistent disks are fine, but available in paid plans only. Surprisingly, Render want money for cron jobs - price starting from $1, Heroku addon can solve this simple task for free. Build timing is definitely not for nervous people, 'cause my test Node.js app build finished after 14 minutes!

Verdict: useful with third party database service, slow builds.

Fly.io

Fly's main concept is widely using Firecracker microVM and distribute them around the globe for better and faster access. Docker and templates deploy options still available. Registration and configuration going through their cli tool called flyctl. Docker container size limited to 1 GB in free plan.

Fly.io dashboard

Fly.io Free Tier: docker/templates, 256 MB RAM, 2340 hours per month, 3 GB static drive, ipv6, free 10 SSL certificates.
bandwith - 160GB/month.
Databases: Postgres available as regular Fly app, same with Redis, no MySQL database out the box.

Credit card is needed to start, worth to mention here 'cause some potential users will not like it. Cli app for deployment is comfortable and easy, when complexity grows console comfort goes away. fly scale count N - great example where cli rocks! Fly web UI is rather poor in comparison with Render. Overall, I think global distribution is the king feature here, if you don't need it better check above and below.

Verdict: overall good, free plan can be better.

Railway.app

Relatively new and not so popular project like mostly from above, good Free Tier and reasonable pricing pushed me forward to test this service.

Railway.app dashboard

Railway.app Free Tier: docker/templates, 512 MB RAM, 100 GB egress traffic per month, free SSL certificate, $5 credit/month, 1 GB permanent drive.
Databases: MySQL, Postgres and Redis.

Railway allow you to start without credit card and include MySQL/Postgres/Redis in easy setup, nice choice to play with several databases and pick up the best for your project. A lot of templates available, all configuration should be done in web UI. The UI isn't very advanced, but does the job. Permanent drive is a nice upgrade after ephemeral-only Heroku. GitHub's account is required to deploy app from Railway template, slightly surprised why, maybe GitHub doing kind of aggressive rate limits. UI is very simple, does the job and even more: you can add MySQL tables and make the queries in web form. One major problem in very slow vCPU, even for a demo app.

Verdict: acceptable, slow CPU in free tier.

Conclusion

In short - nowadays free tier is good in general, each service trying to create his own killing features, sometimes one aspect is bad and very likely is possible to find a solid alternative. MySQL database out-the-box is hard to find as usual, no problems with Postgres & Redis. Ephemeral storage still very popular thanks to Heroku, permanent drive-as-service can be useful in Render.com or Railway.app. Sadly, most of the services will ask for credit card, some of them provide small resources for test and will increase them if you add the payment details. Free SSL certificate looks like new normal thanks to Lets Encrypt. Docker deploys is a must-have, the real industry standard, nothing to discuss here.

  • performance - Heroku still top-notch, very solid performance, has his own "special" architecture and developer should learn how to live with it.
  • features - Render.com & Railway.app, a lot of cool features like HTTP/2, CDN, permanent. I'd say Render.com is the better choice at the moment.
  • multi demo hosting or multiple micro-API hosting - Fly.io rocks here, free tier with big hours credit.

Happy coding!

Read more