Inside the decline of Heroku
- 12 April, 2021 08:30
Heroku has long been held up as the gold-standard platform as a service (PaaS) for software developers to easily deploy their code without having to worry about the underlying infrastructure, while others see it as akin to a magical fallen civilisation with a limited future.
“The history of IT is littered with platforms people thought were fantastic that don’t exist anymore,” said James Governor, a founder of the developer-focused analyst firm Redmonk. “It had a good run and a huge influence, but nothing lasts forever.”
Heroku’s architectural limitations and the high cost of running a business on the platform have historically hindered its ability to truly scale beyond a core set of web 2.0 customers, but there is still hope that Heroku is setting itself up for a glorious second act.
Heroku’s revolutionary legacy
Founded in 2007 by three Ruby developers—James Lindenbaum, Adam Wiggins, and Orion Henry—Heroku was bought just three years later, when the SaaS giant Salesforce eventually beat out VMware to pick the company up for $212 million when it still had only 30 people on staff and supported only the Ruby programming language.
“I believe Heroku was one of the most revolutionary products of its generation and pushed web development further forward than it gets credit for,” said Jason Warner, head of engineering at Heroku between 2014 and 2017.
“It is also one of the most confounding, because it was so ahead of its time. It looked like magic at the time, and people were blown away by it, but it started to calcify under Salesforce. It should never have been a PaaS; it should have been a multilayered cake of PaaS with various escape hatches to build out with Kubernetes or go multi-cloud, but that wasn’t what was to be.”
Today, Heroku is part of the broader Salesforce Platform of developer tools, but it remains a successful business in its own right, accounting for hundreds of millions of dollars in annual revenues and supporting a wide range of languages and thousands of developers who run applications on it.
“Salesforce has made it more stable, scalable, and support new languages. The core idea of taking an app and pushing to the cloud without having to think about servers, with a beautiful developer experience, is the same today, and I know that because I am a customer,” cofounder Adam Wiggins said.
In practice, using Heroku typically involves a common runtime of deploying to a unique domain, which routes HTTP requests to a virtualised Linux container—or dyno, as Heroku calls them—spread across a “dyno grid” of AWS servers. Heroku’s Git server handles application repository pushes from permitted users. There is also the option for dedicated, single-tenant Private Spaces for premium enterprise customers.
“Heroku was one of the first real cloud-native development environments, and they essentially invented the widespread model of container-based computing,” said Yefim Natis, a distinguished vice president at Gartner.
“The thing that blew people’s mind was the Git push to deploy, which is the core idea people take away from Heroku, to take away all of this other stuff people thought they had to do,” said Heroku cofounder Lindenbaum, now a partner at the start-up accelerator Heavybit. “Our vision wasn’t to put lipstick on a pig, but to rethink how this problem isn’t a problem anymore.”
Heroku’s popularity has always hinged on its simplicity, elegance, and usability, pioneering the focus on the developer experience and aiming to make deployment as seamless as the development process. “[Heroku] was magical and everyone that saw it freaked out,” said Adam Jacob, Chef cofounder and now CEO of the System Initiative.
Technologically, Heroku has stagnated
Ten years on, none of the original cofounders are still at Heroku. Meanwhile, under Salesforce, the company has steadily grown its revenues but left the core product largely alone, while broad industry shifts occurred around it.
“Heroku is like a fallen civilisation of elves. Beautiful, immortal, beloved by all who encountered it—but still a dead end,” Jacob tweeted.
“When I joined Heroku, the vision had been fulfilled, but it is also static and has been for some time, which is the frustrating thing for some people,” Warner said.
Although Heroku helped pioneer simplified, cloud-native software development techniques, it took too long to adapt to the emerging industry standards of Docker containers orchestrated by Kubernetes, said Gartner’s Natis. “As far as its architecture and its pioneering character, I think that stopped with the acquisition [by Salesforce]. I think they got frozen in time.”
Tod Nielsen, who was Heroku’s CEO from 2013 to 2016, said from a business perspective, “Salesforce did a great job of expanding Heroku within corporates.” But technologically, “what they gave up was all the ‘cool kid’ innovation.”
Built on AWS EC2 instances, Heroku’s underlying dyno grid system naturally trades off complexity and customisability for simplicity and speed. These trade-offs make the platform elegant and easy to use, but also somewhat inflexible.
For a certain set of companies—namely those building 12-factor web applications—Heroku has and always will be a piece of technical wizardry. “It was very powerful as a developer workflow that was highly productive for a certain class of application, which a lot of startups were building at the time,” said Redmonk’s Governor.
However, as Heroku expanded into other languages, issues cropped up.
“I think we were possibly too early in wanting everything to be simple, which becomes difficult when you turn around and try to go to the Java community, with its immense amount of tooling and deeply embedded ways of working,” said Blake Mizerany, who was the first full-time engineering hire at Heroku in 2008. “That would bite us a little bit when we spoke to companies that wanted to build on Heroku, because they always needed something way off the happy path with Heroku.”
For organisations that wanted a little more flexibility to run applications where they needed, the rival PaaS Cloud Foundry from VMware offered a more palatable route, by allowing for on-premises deployments and the sort of complex customisations required to hook into an enterprise environment.
VMware also invested in a consulting arm, Pivotal Labs, tasked with evangelising the platform approach for more traditional organisations like Orange or Bank of America in the early 2010s.
Heroku, by comparison, has been slow to allow for enterprise customers to operate in hybrid and multi-cloud modes, something Salesforce has looked to address with the addition of Private Spaces in 2016, which allows customers to run in a dedicated environment, connect to on-premises systems, and select from one of six geographic regions.
Similarly, Salesforce’s recently launched Hyperforce should eventually allow all Salesforce customers more choice over where their services run in the public cloud.
Where Heroku and other PaaS options thrive is in their ability to lasso complexity for developer teams to better focus on delivering new features for customers. The problem is, most organisations have built-in tech debt and ways of working that must be accounted for, making something as opinionated as Heroku too constraining.
“There end up being too many pieces for people to assemble and maintain themselves, in which case we see people wanting something like Heroku and that ability to just focus on writing the application,” said Stephen O’Grady, the other cofounder of Redmonk.
“We hear this a lot, where customers are spending like 40 per cent of their time fighting Jenkins, for example. The trick is to do this with enough flexibility to meet a wide range of use cases, and that is where things like Heroku have proved to be too constrained or opinionated.”
Moving beyond Heroku’s limits with build-your-own internal platforms
Camille Fournier, head of platform engineering at the hedge fund and financial services firm Two Sigma, describes Heroku as the “gold standard” for the deploy side of the software development process. However, in her experience, “developers will start to meet the limits of what a platform like Heroku can provide and start to veer off of that path.”
Fournier believes that any quickly growing engineering organization will confront these limits eventually. “It tends to become obvious when you need to build your own platform. If you are using Heroku you will hit scaling limits and see teams peel off and do their own thing,” she said.
Many organisations that do decide to break away from Heroku—like the streaming platform Hulu—are looking to build their own internal platform, working countless hours to chase the vision of a platform that resembles the Heroku experience, but meets specific requirements of their business.
“The modern tech industry is basically folks just endlessly remaking remakes of Heroku,” Redmonk analyst Governor has tweeted. “When something is that beautiful, it is not surprising that it spawned its own sub-genre,” Jacob said.
It is often said that while not many people bought Velvet Underground records, those who did went out and started a band. For software developers of a certain era, Heroku carries a similar legacy. Every developer who came into contact with Heroku continues to chase some version of that legendary developer experience today. “It absolutely is the Velvet Underground of developer platforms,” Jacob said.
But there’s a cost, Jacob noted: “Everyone who touched it has an opinion. The problem is those opinions aren’t just opinions, they are hard constraints when you run a business on software. It’s not fungible and, contrary to popular belief, those constraints are in fact unique.”
That being said, for many early Heroku engineers like Mizerany, imitation really is the highest form of flattery. “For me, the fact that we built something that everyone finds themselves having to build today, is the biggest possible compliment,” he said.
Is Heroku too expensive?
Pricing often comes up as a key blocker for organisations who quickly feel like they are outgrowing Heroku, even if they really love the developer experience.
“Pricing has always been a bugaboo and we never solved it,” Warner said. “At Salesforce you had to make up margin on pricing. I think you can scale Heroku—it runs some of the top 20 websites in the world—but you have to think about it differently.”
Heroku is generally priced per dyno, with a bunch of premium add-ons and high-performance options for enterprise customers, so the cost goes up pretty quickly as your business grows. The highest performing, 14GB dyno costs $500 per dyno per month, and that’s just the start.
“Some are willing to pay for that incredible experience, but for many that became challenging,” Red Monk’s Governor said.
Take the software testing company Rainforest, which moved from Heroku to Google’s managed Kubernetes service (GKE) in 2019 after it started to reach the limits of its database plan and costs started to spiral.
“Until late last year, Rainforest ran most of our production applications on Heroku ... it allowed us to scale and remain agile without hiring a large ops team, and the overall developer experience is unparalleled. But in 2018 it became clear that we were beginning to outgrow Heroku,” Rainforest’s former senior architect, Emanuel Evans, wrote in a company blog post.
Furthermore, Evans wrote, Heroku is expensive, even with the savings the company made from being able to run everything through a small operations team. But Heroku tipped from expensive into too expensive, at least for certain compute-intensive workloads, when Rainforest added some important security-related features, such as virtual private cloud.
Then there is the fintech PensionBee, which built its monolithic Node.js application from the ground up on Heroku in 2015, underpinned by Salesforce, with all data synced by a premium add-on product called Heroku Connect.
PensionBee CTO, Jonathan Lister Parsons, sees the price concerns around Heroku as overblown when total cost of ownership is accounted for. “I think about all the shit you don’t need to do with Heroku and it is a list with 20 operational things on it,” he said. “Yes, it is expensive compared to AWS, but you are getting a team of a thousand people who are there to run a service that runs your code very well.”
That being said, “Heroku Connect is still unacceptably expensive and, as we grow and scale, it goes past the point where using that solution makes sense—and they know that,” Lister Parsons added.
A Salesforce spokesperson acknowledged Heroku’s cost but said, “Cloud operations are expensive, and we need to be sure we’re adding all the costs up. If someone is comparing IaaS costs to Heroku’s PaaS offering, they may be overlooking the staffing of devops, pipelines, integrations, and IaaS substrate impacts to operational load.”
Where Heroku continues to make sense
Like everything in software, Heroku’s recent struggles may partly reflect simple fashion trends. Just as some developers will build applications on bare metal today, some will build on Heroku, but fashion would dictate building on Kubernetes. “That doesn’t mean it is better to do things on AWS or Kubernetes,” Jacob said. “In fact, it is objectively worse than Heroku for stuff that would comfortably sit on Heroku and be a Git push away."
Today’s Heroku users more typically come from well-funded companies with well-suited use cases for a highly opinionated PaaS, with deep enough pockets to keep running Heroku at scale, like current customers Everlane, Bonobos, Yobota, and Cambly.
Take PensionBee, which consolidates various pensions into a single plan for customers to access through web and mobile apps.
“I wanted to ship product as quickly and with as little effort as I can, so a PaaS like Heroku is an appealing place to start,” CTO Lister Parsons said. “We are making sure that Heroku and Salesforce is fit for when PensionBee has a million customers. Yes, we have started to pluck other things off the shelf that are the best fit for whatever the use case is, and we aren’t 100% wedded to [Heroku and Salesforce], but they are the foundational platforms.”
Does this mean that Heroku is destined to remain a legendary technology that is now limited to being deployed as a premium, niche service for those who can afford it, like taking your kids to school in a Ferrari Testarossa?
“We often think in terms of an outsized success like AWS, which is something for everyone, and I don’t think Heroku is that. It is for a narrower audience and it does that well,” Wiggins said.
“Heroku isn’t dead, it is a massive business with hundreds of employees and will stay not dead for a long time,” Jacob said. “But the technology will wind up being a glorious moment in time that people will talk about for years to come, like The WELL.”
A possible new serverless chapter for Heroku?
Heroku may have lost its luster in a Kubernetes world, but does the promise of serverless applications open the door to a glorious second act for the platform? Do the economic and architectural criticisms start to melt away as customers only pay for what they use?
“A serverless Heroku would be cloud-native Version 2.0, where all infrastructure functions are hidden and assured by the provider,” said Gartner’s Natis. “For Heroku to remain relevant, they have to be serverless, because what they pioneered is now legacy.”
For Heroku cofounder James Lindenbaum, “serverless is super interesting” in how it relates to Heroku, because “it is that next step of ephemeralisation. … However, no one has yet figured out how to bring that together into a nice mental model for developers,” he said. “That is probably the next thing we would have tackled at Heroku, had we stayed. Those are the kinds of things typically the founders have to do. You need a lot of moral authority to take that risk.”
It’s unclear at this point if serverless is the direction of travel for Heroku, which is currently led by Patrick Stokes, general manager of the wider Salesforce Platform. But the general availability of Salesforce Functions later this year signals a shift is on the horizon.
“The next big thing for Heroku is the deep integration of its capabilities with the rest of the Salesforce Platform via Salesforce Functions,” a Salesforce spokesperson said. Salesforce Functions “lets developers write code that integrates with their data and events on the Salesforce Platform, then run it on-demand with elastic scale in a serverless environment.”
If serverless were to become the next industry standard, there is certainly an opportunity there for Heroku to reshape itself for that next wave of change. “I would leapfrog microservices for serverless if I did this again today,” said PensionBee’s Lister Parsons. “Serverless could be the ‘phoenix from the ashes’ moment for Heroku.”