Deciding Between Heroku Alternatives

Jeff Morhous headshot

Jeff Morhous

@JeffMorhous

Platforms that make shipping web apps easier have given us plenty of options to deploy and run applications in the cloud. A Platform as a Service (PaaS) abstracts away the complexity of infrastructure management, giving you ready-to-go infrastructure at a markup, a tradeoff from managing the underlying infrastructure at a lower cost.

If you’re here, you probably already know what a PaaS is, and you’re probably already familiar with Heroku. In recent years some Heroku alternatives have come into the market that might make you wonder, is it still the best option?

By the end of this, you’ll have a better idea of how each Heroku alternative compares not just to Heroku but to each other. We’ll dig into Heroku, Railway, Render, and Fly. We’re focusing on production deployments and the nuances that matter when running production workloads for plenty of users, so if you’re a hobby developer looking for the best free plan, you won’t find this super helpful.

Whether you’re considering a migration from Heroku or evaluating options for a new project, this article will help you decide - not by listing through features, but by contrasting the unique characteristics of each PaaS option.

How Does Render Compare to Heroku?

One of the most popular Heroku alternatives is Render, another PaaS that runs on AWS like Heroku. Render is the new kid on the block, relatively speaking. Render is often cheaper than Heroku, but there’s more to consider than price!

Apps vs Services

The most obvious difference between Render and Heroku is that Render’s platform revolves around “services” while Heroku allows you to deal with the concept of “applications”. If you’re deploying a Rails application on Render, you might have a web service, a database service, a Redis service, and a Sidekiq service. This offers developers a bit more flexibility and control over each service, but introduces a bit of administrative overhead that Heroku addresses by allowing you to deal with “apps”.

Apps on Heroku vs services on Render

The Heroku concept of “apps” means the system treats everything a web application needs to run as a discrete deployable unit. This allows you to focus on the application as a user would interact with it, avoiding needing to understand and maintain each piece of individual infrastructure.

Render does offer some of this experience with the recently introduced projects feature but it’s not primary to the way the platform expects you to manage your apps. You think about your app as a unit, why shouldn’t the platform?

Comparing Compute Options

One of the biggest benefits of Render over Heroku is the granularity of compute options. Heroku has limited options when choosing compute (and therefore cost), particularly in the mid-range. It can feel like you either pay a little or you pay a lot, and if your app exceeds what spending a little gets you, then you end up having to pay for more than you need.

Render bills per seat plus compute costs, with plenty of compute options for web services. Render isn’t unique in this category though, both Railway and Fly also offer more compute & pricing options than Heroku, with Railway offering even more flexibility (we’ll get there, keep reading!).

Stability and Reliability

It’s hard to truly quantify service stability or even customer support. Still, some searching around the internet quickly shows a history of Render customers being upset about both.

Heroku is a tried and true veteran in the PaaS space, boasting a long history of reliable service. While Render and Heroku both run on AWS for their underlying infrastructure, Heroku has a longer history. Render is a smaller and younger business, and has faced some scaling problems over the years leading people to complain about both latency and build times.

While there seem to be fewer complaints about Render’s performance and reliability online in recent history, this is an important factor in considering Heroku alternatives. Of course, reliability has varying degrees of importance to each business so the cost tradeoff might make sense for you.

Compliance on Render

Render is SOC2 (Type II) compliant, which is often enough for small-to-medium businesses, especially those not working in highly regulated industries like healthcare or finance.

If you are working in a regulated space, you’ll find that Heroku beats every alternative on compliance without question.

Heroku boasts many compliance certifications, depending on the Heroku service. For all services, Heroku is SOC1 (Type II), SOC2 (Type II) and SOC3 compliant. Heroku is also ISO 27001, 27017, and 27018 compliant across all services.

Beyond these certifications, Heroku also offers HIPAA compliance for some services, something Render does not currently provide. When compared to any of its alternatives’ compliance options, Heroku crushes it!

Heroku alternatives compliance comparison

Static Sites on Render

While Heroku can support deploying static sites, it’s built to host applications. The same is true of Fly.io, and Railway to a similar extent. Render has first-party support for static sites, including managed TLS certificates and a CDN.

Cloudflare on Render

While Heroku offers basic DDoS protection, it’s not as comprehensive as something like Cloudflare. You can integrate Cloudflare into your Heroku application without too much extra work, but Render apps come with Cloudflare protection by default.

Database Security on Render

Heroku supports PostgreSQL as a fully managed database service, you must be on an enterprise plan to restrict public internet access to the database. Render, on the other hand, lets you limit database access based on IP address without an enterprise plan. This isn’t applicable if you’re running your database on another provider, which we talk about a bit later.

Evaluating Railway as a Heroku Alternative

Another popular alternative to Heroku is Railway, another Platform as a Service.

Creating a new project on Railway

Railway has a lot of similarities with Heroku, so let’s walk through how it differs.

Railway’s Compute Options and Pricing

One of Railway’s greatest strengths is its per-unit pricing for compute. Your account is charged per user plus the compute you use, but it’s the way that compute is priced that makes Railway unique.

Rather than selecting a compute tier that works for you (as Heroku, Render, and Fly all have you do), Railway lets you select how many GB of RAM you want, how many vCPU cores you need, and bills you per unit for network egress as well. This lets you pay for exactly as much compute as your app needs without having to change to a tier with too much headroom.

🚨 Warning

Egress costs can vary wildly between each PaaS.

Heroku doesn’t charge for egress, but has a “soft limit” of 2TB per month.

Railway charges $0.10 per GB for egress, while Fly charges $0.02 per GB for egress (to North America and Europe). Render includes 100 GB per month of egress on Hobby plan, 500 GB per month on professional, and 1 TB per month on Organization. Extra bandwidth on Render is expensive, at $30 per 100 GB.

For a high-traffic app like Judoscale, these differences in egress could make a platform prohibitively expensive. To be specific, Railway and Render become outrageously expensive.

To get as much network egress as Heroku allows for free (2 TB per month), the costs of the alternatives vary wildly.

Comparing PaaS egress costs

This is a huge variation in costs, just for egress!

DDoS Protection on Railway

Like Heroku, Railway comes with some basic DDoS mitigation but it’s up to the platform user to integrate advanced protection from something like Cloudflare. In early 2024, Railway itself suffered an outage from a DDoS attack, causing a few hours of partial service degradation. This isn’t a common occurrence of course, but it highlights the risk that comes when adding a layer into your infrastructure.

Railway Databases

Railway allows developers to deploy databases to their platform, but doesn’t consider it a managed service. If you’re using Heroku or Render, your database maintenance and support are done for you, while Railway (and Fly!) require you to do some of the support yourself.

While Railway doesn’t offer static IP addresses, you can restrict access to Railway-hosted databases with private networking, a feature not offered by Heroku except on their enterprise plan. This may not be the biggest deal to you, as databases are secured by a password on every platform, but allow-listing IP addresses is a common security pattern.

Railway’s Compliance

Railway is SOC2 (Type I) compliant, but not yet certified for SOC2 (Type II). If you’re looking for a copy of their security audit for your own compliance needs, you’ll need to be a customer on their pro tier or higher.

Cron Jobs on Railway

Another thing that sets Railway, Fly, and Render apart from Heroku is their support for cron jobs, using cron expressions to run scripts in any supported language. Heroku offers something similar, abstracted into its Scheduler add-on. The Heroku scheduler offers only a few options for schedules, making it less flexible but easier to work with than cron jobs on other platforms.

Static Sites on Railway

Railway can host static sites, but it’s not built for them. Like Heroku, Railway is built for applications, so there are some extra steps if all you need is a static site. It’s not as straightforward as Render or front-end focused platforms like Netlify and Vercel, but Railway has good support and documentation for hosting a static site using Nginx.

Fly.io

Fly.io is another Heroku alternative, but differs from Heroku, Render, and Railway in an interesting way. Rather than running its infrastructure on the cloud, Fly runs applications on their own bare-metal servers distributed around the world.

The Fly.io homepage

The developer experience is similar to other PaaS that run on the cloud but with a special emphasis on edge computing. Let’s take a look at some critical differences.

Fly’s Compute Options

When it comes to choosing how much compute your app needs, Fly has a ton of options. It certainly has more granular options for compute tiers than Heroku and seems to have more options than Render.

It has inexpensive options, starting at just $1.94 per month. Still, as you scale, the price between each platform may be relatively similar. If you want predictable and flexible pricing, Railway’s pricing structure of paying per unit of compute is unbeatable.

Compliance on Fly.io

Fly is also compliant for SOC2 (Type II) and even offers a path for HIPAA compliance via a BAA, making it a bit more flexible than Render, but not quite as comprehensive as Heroku. If compliance is a concern in your business, or it might be in the future, Heroku clearly wins this category.

DDoS Mitigation on Fly.io

Just like Heroku and Railway, Fly offers basic DDoS protection but not Cloudflare. If you really want DDoS protection done for you, Render is the only platform that offers this.

Databases on Fly.io

Unlike Heroku and Render, Fly doesn’t have a fully managed database service. You can use Fly to run PostgreSQL, but they point out that it’s not the same as a managed database, requiring you to do some maintenance and support that the other platforms don’t require.

If you want a managed database service, Fly recommends you use an external provider. This isn’t necessarily a bad thing - we encourage folks to use a dedicated database provider like Crunchy or TimescaleDB regardless of their PaaS. While Judoscale proudly runs our application on Heroku, we use a database provider to take advantage of advanced features and let Heroku do what Heroku does best. If you’d still prefer your PaaS to also manage your database, Fly might not be the right choice for you!

Managed Cloud Options

Besides traditional platforms, there’s a group of tools that act as wrappers around cloud providers that make cloud deployment easier while still keeping you close to the infrastructure.

The infrastructure pyramid

These options are often cheaper than a fully managed platform like Heroku but still offer some convenience over exclusively using the underlying cloud provider. Using a cloud provider with another layer to manage it also removes some vendor lock-in!

Bring Your Own Cloud With Porter

One such tool, Porter, brands itself as a PaaS that lets you bring your own cloud. Porter is compatible with AWS, Azure, and GCP, letting you easily manage your application without being locked into the platform. Costs of traditional platforms like Heroku rise dramatically as your compute needs grow, and running on a cloud service while paying for a management tool like Porter gives you a way to disconnect your developer experience costs from your scale.

Dokku - An Open-Source Heroku Alternative

If you’ve ever wished that Heroku was open-source, you’re not alone. Dokku is an open-source tool that runs on your own cloud resources and acts like a self-hosted PaaS.

You first provision infrastructure, then set up Dokku, and treat it like you might Heroku! Configuration is very involved, so the developer experience of starting an application with Dokku is not comparable to any traditional platform. Calling it an open-source Heroku alternative is a bit of a bait and switch since now you have to manage a whole platform instead of your app!

Still, once your application is running, Dokku gives you more easy application management than you would otherwise have on your own cloud infrastructure.

Managed Infrastructure with Cloud66

Cloud 66 is a lot like Porter - it lets you bring your own infrastructure but still has a convenient management layer that feels like you’re using a platform. While Porter is cloud-focused, Cloud 66 works with more than just the big cloud providers.

You can use Cloud 66 to help you deploy and manage applications running on Azure, GCP, AWS, Digital Ocean, Linode, Hetzner, and more. Pricing is a flat rate and not directly connected to your traffic, making this a good option for applications that would otherwise be too expensive for a platform.

Should You Stay on Heroku?

In short, if your priority is developer experience, you won’t find a better option than Heroku.

👀 Note

Naturally, we’re a bit biased at Judoscale. Judoscale is built on Heroku and we love it! Our autoscaler integrates with Heroku, Render, and even AWS ECS, and we’re currently evaluating Railway and Fly for potential integrations.

We have happy customers on each platform, so it’s obvious that a good deal of context goes into deciding how to host your app. The choice between platforms is largely dependent on your priorities. The choice to use a platform at all is largely dependent on your priorities!

Heroku is well-known, well-supported, and battle-tested. It has a long history of reliability and incredible compliance options. It has a huge ecosystem of add-ons, including Judoscale, that expand its feature set and give you even more ways to ship better experiences for users.

If your priority is price alone, then a standalone cloud option or a VPS is without a doubt the best option. If you’re looking for some extra features to make that easier, a managed cloud option like Porter or Dokku can do so for some increase in price. The increase in price that comes with using a managed cloud provider is large enough in my opinion that you might as well just use a fully-featured platform!

Render is a great option for a fully-featured PaaS if your primary concern is price and you’re just starting out. If you are migrating and know your traffic levels, you may get similar features from Railway at a more advantageous price if you don’t need a lot of egress bandwidth.

If you want proven reliability and unbeatable developer experience, Heroku is still the way.