Heroku is a well-known, cloud-based Platform as a Service (PaaS) that hosts millions of apps. Their user base deploys projects onto the platform that range from small coding-practice and hardly-used experimental apps to some of the most trafficked content and news sites on the internet – Heroku publicly boasts Urban Dictionary and Upworthy as marquee users.
Heroku's published customer list is impressive and includes the likes of retailers, manufacturers, restaurant chains, and technology companies. While it's understandable why smaller or less technical companies with limited IT staff would need to simplify their processes for deploying applications, some of the organizations on Heroku's customer list are ones you'd expect to have enough DevOps manpower not to need the help of Heroku's platform. Certainly even these companies have business or technical reasons why they choose to deploy their apps on Heroku.
It's no secret that Heroku has wide appeal and provides tremendous value for lots of developers and IT teams.
But Heroku obviously isn't for everyone. A query of Google's Keyword Planner shows that there are potentially 10,000 people each month who are interested in "heroku alternatives". You may have even been brought to this article from a search similar to that one.
What's not to like about Heroku?
Why Are People Looking for Heroku Alternatives?
There are several reasons why a developer, a dev team, or a business looking to deploy a new app to the cloud would need a substitute for Heroku. Overall cost is always a factor. Language support is another obvious reason. There are other specific issues that steer existing or potential Heroku customers in another direction.
I will discuss Heroku alternatives in light of what our Nanobox development team, many of whom have used Heroku for projects in the past, has experienced regarding its strengths and limitations.
The most common reasons IT teams are unable to use Heroku include: vendor lock-in with AWS, exorbitant cost, lack of language support, other technical limitations.
Heroku is coupled with AWS, so if your application is running on Heroku, that means you are also tied to AWS.
There are many reasons why this can become a problem. One of the most common concerns regards compliance with government and other regulations. Laws exist in many countries that restrict where data can be geographically stored. Locations for running apps and storing associated data with Heroku are generally limited to wherever AWS stores data. Often that limitation makes it impossible for an organization to host on Heroku.
Additionally, AWS's license agreement can conflict with a business' legal constraints, whether internal to the organization or as the organization is governed by external commitments and obligations.
A study published in April, 2016 found that "vendor lock-in is a major barrier to the adoption of cloud computing, due to the lack of standardization." Companies reluctant to move to the cloud - many of them hosting their technology on-premise where they have much more control - cited reasons that include lack of interoperability, portability, compliance, trust, and security. In a situation where a company finds out that it is required for legal or other reasons to move to a different host, say Microsoft Azure or DigitalOcean, the process of migrating can be very painful. Until there is much more adoption of a standardization for cloud computing, this vendor lock-in issue will continue to be significant reason for companies to pursue substitutes for Heroku.
Heroku Gets Expensive
Heroku prices their plans based on dynos, which are Heroku's containers for running apps.
Heroku's pricing tiers include:
- Free - for experimental apps in a limited sandbox
- Hobby - a non-business (personal) paid plan for hobby projects and smaller personal projects - starting at $7/month per dyno
- Standard - configured for running smaller professional applications - starting at $25/month per dyno
- Performance - for critical, high traffic apps - starting at $250/month per dyno
The problem many Heroku users find is matching budgets with the somewhat monolithic plans offered by Heroku. Users complain that the free plan goes to sleep after 30 minutes of being used. Unless they trick the system by keep their app awake, they have to jump to the hobby plan.
Heroku's professional plans package a lot together into one dyno, which can cause a lot of cost overhead and making it so that customers are essentially paying for features they don't need.
From the pricing perspective, people looking for alternatives to Heroku often want more granular control over components of their applications so that they can fine tune and balance not just the performance of their apps, but the cost as well.
Heroku started out as a deployment platform for apps developed in the Ruby language, and it grew side by side with the language as Ruby on Rails took off around 2006-2007.
Over the years, Heroku has added "first-class" (primary) support for several other popular web programming languages, including:
+ Java + Node.js + Scala + Clojure + Python + PHP + Go
If you're developing an app using a language other those that Heroku supports as "first-class", your next option would be to use one of the buildpacks published on Heroku's Elements library. These secondary languages are not fully supported, meaning that Heroku's engineering team may not have the latest version of the language or framework you're using, and those languages may not be fully patched.
For instance, if you're one of the growing number of users developing with Elixir, you might be more comfortable using a deployment platform that provides primary support for that language to ensure that you're always up to date.
Nanobox Versus Heroku
Our very own development platform, Nanobox, has been engineered, considering many of the limitations of Heroku to consciously make itself a legitimate alternative to Heroku. Nanobox addresses many of issues Heroku users (and potential users) have that cause them to look elsewhere. Most important of those is that we have decoupled our micro-platform from the underlying host, which gives flexibility to Nanobox users and allows them to avoid the common problem of cloud vendor lock-in. You can use Nanobox and have your app hosted in AWS, Digital Ocean, Linode, Google Cloud, or other cloud providers. You can also use it to host your apps on-premise.
This de-coupling of the development and deployment platform also gives companies greater control over the costs associated with running their apps in production.
Other Alternatives to Heroku
While Nanobox has been built to solve most of the problems faced by technical teams searching for Heroku alternatives, we recognize that there are other alternatives to Heroku, some of which work better for one organization, and others of which are more appropriate for another.
Whether your organization is able to use Heroku or should instead consider one of the alternatives described below depends quite a bit on how your dev teams are structured, what kinds of apps you're building and maintaining, the dynamics of your business environment, the technical approach and maturity of your teams and management, along with a lot of other variables.
To make the best decision about what tools and platform you're going to use for publish apps, you'll obviously need to understand clearly how your business objectives match up with the various options that are on your organization's short-list. Because of how quickly the technology ecosystem changes, it is common for most organizations to re-evaluate how they approach building and maintaining their cloud infrastructure - considering budget, technical compliance needs, etc. - on a regular basis. For some businesses, this evaluation is done as often as every six months. In other cases, it's on an as-needed basis, such as when a new app is in the pipeline.
Manual DevOps, Docker, Kubernetes
Some organizations choose to simply employ IT staff that handles the automation that might otherwise provided by Heroku's platform. This alternative can be costly as more wages are spent on infrastructure personnel, but for many organizations - especially for some finance, ecommerce, and healthcare companies - that are subject to strict legal requirements, this option makes the most sense.
For those who are are committed to going the internal DevOps route, it may be useful to consider a few tools that get you closer to automation and make it easier for your DevOps team to configure your infrastructure.
In the "See Also" section of the Heroku Wikipedia page, these tools are listed as alternatives:
- AWS Elastic Beanstalk
- Cloud Foundry
- Cocaine (PaaS)
- Google App Engine
AlternativeTo.net lists several dozen automation tools that have been suggested by the development community as being capable of replacing Heroku in one way or another. The most popular of those are:
- Google App Engine
- Microsoft Azure
Using Nanobox as An Alternative to Heroku
We invite you to give Nanobox a try as a Heroku substitute. Our pricing is $10 per month for an individual, and $15 per month for team license. With Nanobox, you can host unlimited apps without any pricing increase from us. Because Nanobox works with any cloud provider and allows you to choose what hosting features you want to pay for much more granularly than Heroku, you have much more control of your overall costs.
If you're inclined to give us a try, here are some resources to help you get started.