I'm kind of obsessed with this question, and I'm not the only person who is. I've been asking folks a lot lately, and the first response is often something like, "Oh, god, I know, right? It's weird that we're not."
Because Heroku was really good. It was easy and it was fun. It got my apps into production and it let me focus on writing code. In 2014-ish – before Kubernetes – it seemed obvious that Heroku and things like it, the "platform-as-a-service," were the future of operations. I joined Cloud Foundry to help make that future happen.
And instead... something else happened. Now, getting an application on the internet often requires a lot of YAML. We have to fight through a mess of awkward, rigid DIY platforms, of AWS free-for-alls, and of occasionally successful Kubernetes migrations. It's not good. It's not easy. And – except for a handful of folks who really love building hard-to-debug Rube Goldberg contraptions out of controllers – it's definitely not fun.
So how and why did we get here? I don't have a clear answer, but I've got some ideas.
- Price. Heroku (and Cloud Foundry) are both expensive. Maybe they just don't deliver enough value to justify their premium over raw AWS, etc.
- Services. Maybe running 12-factor apps just doesn't matter that much, and what does matter is services stateful services. Maybe, ultimately, companies are just going to run their applications somewhere near whoever has the best managed MySQL.
- Open source. Maybe the volume and variety of Kubernetes contributors provided a significant edge of some kind over Heroku's entirely proprietary development, or Cloud Foundry's "open source as neutral zone between enterprise vendors" approach.
- Observer effects. Maybe we really do live in a world that's dominated by Heroku and (especially) Cloud Foundry applications in so-called "dark matter" development – software that's built, basically, by banks. This wouldn't be visible in the technical press, but just because big tech and trendy startups happen not to use those technologies.
- Flexibility. Maybe platforms like Cloud Foundry and Heroku are too limited once you get past the most basic CRUD application. Production details matter, especially at scale, and eventually applications of any significant size need customization that's not possible on a platform-as-a-service.
- Management incentives. Headcount is power. Budget is a liability. Maybe this tends to nudge infrastructure organizations towards building their own platform over buying a platform as a service.
- Enterprise software purchasing dynamics. Enterprise software is any software that is bought by someone other than its users. Maybe fitting developer needs really well doesn't matter for platforms, and what matters is meeting the needs of the people actually buying the platform.
- Marketing. Kubernetes had pretty good marketing, retained really top shelf developer advocacy, and invested in enabling developers to try it out. Heroku and Cloud Foundry had pretty bad marketing, failed to develop a significant developer advocacy practice, and frankly just whiffed on some basic plays. For example, for a long time Pivotal deliberately made it hard for developers to try Cloud Foundry, by holding back "easy installation" features for enterprise customers. Maybe this is just a case of "better marketing beats better engineering."
- Acquisitions. VMware bought Pivotal, Salesforce bought Heroku. Maybe PaaS vendors just got distracted at a critical moment, and Kubernetes was able to grab market share with limited competition. Maybe, also, companies that would have been happy to buy from Pivotal or from Heroku were wary of buying from VMware or Salesforce.
- "No-code" tools, and niche platforms generally. A lot of the value of a platform is in being able to throw up simple applications easily, in order to automate business processes cheaply. Maybe the problems a business can solve with simple CRUD applications can be solved better with tools that are more focused, and therefore the demand for this category of platform moved "up the stack." Likewise, maybe more focused platforms like Glitch and Netlify ate the more "generic" market.
Personally I find a combination of 2 (services), 8 (marketing), and 10 (competition from no-code and niche platforms) most plausible, but I'm still not satisfied.
Why do you think we're not using Heroku?