Benchmarking Fly.io vs Render vs Heroku

With the ending of Heroku free tier at November 28th 2022, devs are in search of a better PaaS alternative to host their apps. The things I need in a PaaS are:

  • Low latency

Luckily, there’s a lot of available options, from Render, Fly.io, Railway, to Doku. Unfortunately, Railway cannot guarantee that it’s going to be free after the $5 credit is used, so I benchmarked Heroku, Render and Fly.io.

Method

Render and Fly.io App is deployed in Singapore Region, and the Heroku App is in US-East because SG Region is not available in Heroku.

  • /health endpoint only returns “OK” as string. This should show the performance of the server alone. Tests for this endpoint are done in the terminal and REST API Client.

I used Baton, a Go based load testing CLI, and Insomnia, a popular and lightweight API client, to do the http request from my machine, requests are sent from my ISP, located in Jakarta. For Baton, I sent 30 requests with no multithreading to standardize the requests. Plus, my server has a rate limiter so I won’t try to get past that limit.

baton -u https://{{API_URL}}/health -c 1 -r 30

  • -c 1 shows that we are sending 1 concurrent request

Result

Here are the results with Baton CLI:

| Endpoint    | Heroku | Render | Fly.io |
| ----------- | ------ | ------ | ------ |
| /health | 600ms | 2.1s | 34ms |
| /blog | 900s | 2.7s | 77ms |

As you can see, Fly.io is so much faster than Heroku and Render. For the Heroku, it’s understandable because of the regional latency. For the Render, it’s basically unusable.

Here are the results for the requests done in Insomnia REST Client and Chrome browser (for the Google auth).

| Endpoint    | Heroku | Render | Fly.io |
| ----------- | ------ | ------ | ------ |
| /health | 1.1s | 1.1s | 187ms |
| /blog | 1.393s | 2.83s | 372ms |
| google auth | 600ms | 5s | 400ms |

The results are the comparably the same, with Fly.io in the first place, Heroku in the second (despite being in US-Region with obvious regional latency), and Render being the last. So I chose Fly.io as my next PaaS to host my APIs, but deploying to Fly.io is trickier than Heroku and Render. I will write about deploying apps to Fly.io in the future so stay tuned to my blog.

--

--

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store