The decline of Heroku

0
112

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 civilization 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 multicloud, 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 virtualized 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 startup 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 civilization 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 customizability 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 organizations 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 customizations required to hook into an enterprise environment. VMware also invested in a consulting arm, Pivotal Labs, tasked with evangelizing the platform approach for more traditional organizations 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 multicloud 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 organizations 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% 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 organizations 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 subgenre,” 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 organizations 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,” RedMonk’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.”

Source