Heroku Dilemma: The Growing Startups' Journey
Two years ago today, we shared some insights of 200 CTOs from growing US and EU startups on the topics of the Cloud and their working methodologies (to find out here).
Welcome to the second series: “Heroku Dilemma: The Growing Startups' Journey.”
Morgan PerryJuly 5, 2022 · 6 min read
Fast forward to 2022, the Heroku choice still raises many questions.
We have been on Heroku since the start for its simplicity. But we started facing some performance and cost issues, so we are considering switching to AWS, but it requires a significant effort, including DevOps resources and time. Tim, CEO of GoTab
This is the most common scenario we’ve seen at Qovery, with nearly one hundred migration requests managed to date.
Yet the right question for any startup is not so much "What are the best Heroku alternatives?" but "When to move out from Heroku?".
In this article, I will share insights on why growing startups want to move off of Heroku and the key factors they are considering when it comes to migrating. Hopefully, it can help many other startups that may be in the same scenario (or are already on their way to migrate). Let's go!
Needless to say, Heroku was the perfect solution to kickstart a project for most of the interviewed startups. Heroku helped them get their applications up and running quickly, without worrying about servers, scaling, backup, network, and underground details. But as the project grew, the needs seemed to become more complex, and moving from Heroku to a more flexible and cost-effective cloud infrastructure solution like AWS became more and more a no-brainer choice.
But why do some growing startups continue to use this solution despite the increasing complexity?
This may seem counter-intuitive when the most successful organizations have embraced a DevOps culture to manage their thousands of application deployments per week. The reality is that when you are a startup growing extremely fast, you have to make critical decisions about your hiring plans and team velocity. Those who are in this market know this. Adopting a DevOps culture can be challenging to implement and, more importantly, maintain and evolve. The long-hiring process for a good DevOps engineer and the costly resources can encourage some startups to make the opposite bet. And if instead, you could focus on hiring the most talented developers, focus thoroughly on customer value, and choose a robust solution that would bring you that abstraction related to an infrastructure ready to scale and all the required automation (aka Heroku)? This was the bet of most of the growing startups we are talking to, and so far, they have not done too bad :)
Strongly related to the first point mentioned above, but when culturally your company values customer obsession and speed of execution as a primary value, the result is that the focus is mainly at this level: allow the talents pool you recruited (aka army of developers) to be in the best conditions (aka developer experience) to deliver customer value as quickly as possible (aka speed); no matter the cost. That’s one of the most critical points of our discussions with these startups’ tech teams.
Although needs are increasingly complex, flexibility is essential for most organizations and teams. But often, with the addition of flexibility comes to the loss of extreme simplicity. Most interviewed startups have had to make a trade-off to stay aligned with what their organizations and customers value (speed and simplicity).
Now that we've covered the main reasons why some growing startups still use Heroku, let's look at what they like most about Heroku and what they want to keep when it comes to switching.
While Heroku is great to start with, it becomes more and more limiting as your organization grows. So now, imagine that your organization has achieved a fast-growing pace. Let's look at the main points against Heroku:
The simplicity of Heroku is what made it so successful, but it's also what makes Heroku so challenging to grow. Indeed, you become to be highly dependent on Heroku's tech stack, and there's a lack of transparency and control. Trying to fine-tune the minor thing becomes impossible. Advanced configuration is quite limited compared to deploying on a strictly IaaS provider.
This is not a surprise but probably one factor that stands out the most. As your business grows, so do your costs on Heroku. And this becomes a hard limitation for growing startups. While Heroku gives you more time to focus on building applications, this quickly gets expensive, especially when you plan to scale.
We have made a price comparison table between Heroku and AWS in this article.
Regarding resources and features, Heroku quickly becomes limited, especially when hosting your apps in specific or multi-region. On Heroku, there's no regional redundancy, which means an AWS outage in the selected region will directly affect your app. As well, the limited region choice results in higher latency when your app targets users from other countries like Australia or Japan. While Heroku offers Private Spaces, which includes six different locations, it's only available in the pricier Heroku Enterprise package.
Last but not least, Heroku only allows manual horizontal and vertical scaling but not autoscaling unless you opt for the Private Space dynos (enterprise package)
Heroku has not been spared from outages for some time, and it seems to be getting more frequent. But the most recent outage in 2022, the one related to the GitHub/Heroku integration issue has hurt many startups and seems to have been the straw that broke the camel's back for most. For example, we have seen dozens and dozens of migration requests at Qovery following this incident.
Now that we've seen the strengths of Heroku and what makes them tick, let's see what the list of key requirements for a cloud solution looks like from the organizations we interviewed:
(by order of importance)
- Security and compliance
- Developer experience
- Support/level of commitment
- Monitoring / Metrics / Datadog integration
- Scaling & Performance
- Resilience / Availability / SLA
- Deployment time and safety (e.g., rolling deploys, etc.)
- Cost structure & flexibility
- Bonus: Carbon footprint & Environmental impact
We've seen that the "Heroku Dilemma" is hotter than ever for these growing startups, and that's true for any size organization. While we hear the scenario from most startups we support at Qovery, we still learned a lot by discussing the challenges and why the engineering teams from growing startups chose to push Heroku to this point and their wishes to get out today.
I've listed above the main reasons and concerns that a typical growing startup considers when migrating from a PaaS solution like Heroku to an Iaas like AWS. In a second part, I’d love to share, from a technical perspective, how the migration of such an organization works, including tech stack migration and team collaboration/synchronization.
Stay tuned! 👀