Heroku made reproducible builds and deployments a thing at a time people were used to ssh'ing in and scp'ing files around for deployment. While 12factor later become canonized it was built into Heroku since day 1. Heroku was created because you could spend a month building a MVP app in Rails, but then it'd take as long to deploy it as to build it. Deploying software was too hard. And today we're still trying to get back to that, sometimes very unsuccessfully by adding abstraction layer on top of abstraction layer. Did Heroku fail? We're still talking about it over 10 years since being acquired as a gold standard for developer experience.
Okay, fine, but it wasn't acquired for something like GitHub... While two very different companies Heroku was acquired nearly 10 years earlier. It was the first large scale acquisition out of YC. I do not know the internals of YC, but it's been commented by others that know it better the exit of Heroku helped greatly YC for the time and place it was. It was a different time. Heroku to this day generates revenue and likely it's different from what people expect.
Yeah this one is selfish, but you can largely thank Heroku for Amazon RDS. Way back in the day we had Rails devs asking for a database. We thought how hard could this be, it turns out it was much more work than we expected. We bet on Postgres because one of our engineers said it had a great track record of security and reliability (not playing fast and loose with data semantics)–it was the right choice. Years later when Amazon adding support for Postgres on RDS the team sent some personal notes that essentially said, this is because you made it so in demand.
Now... what went wrong.
Yes, several people left after the acquisition, some at 2-3 years, some at 4-5 years, some are still there and have been before the acquisition. Acquisition or not when some of the technical and product visionaries leave it's hard to replace that. Adam gave his absolute all, he was spent after. 12factor felt like his going away letter. But that void was never fully filled, some of us may have had a shot of it, but after long runs were also tired.
Was Heroku cocky at times toward Salesforce integration, at times yes. At times I don't think was always the case. Did we want to run 20GB J2EE apps when Rails/Django/Node were lighter-weight, of course not. Did we want to login to gus to open a support ticket on a VPN? No. Did we want to move into the SDFC offices that were cube farms vs. large ceilings with a lot of natural lighting?No. But could Salesforce help us make Heroku more available to customers and accelerate adoption? Sure. Could we have focused more on enterprise requirements around security and compliance to reach the enterprise audience? Yep. In retrospect maybe we should have proactively integrated a bit more, I know many of us there at that time feel that way, but there were pockets of integration. I recall hosting the Sayonara team at the Heroku office for a Friday happy hour. We made sure to have it well catered and make them feel as welcome as possible. There was good and bad in the integration, but a common metric of acquisition metrics is how many that are employed at time of acquisition are employed x years later. Heroku had a lot of us still there, 2, 3, 4, 5 and even beyond.
Was pricing and business model a factor? Maybe. But I'm not sure you can get what Heroku gives you out of a single employee. I'm excited for what others are building in this space now, but it's not about being a "cheaper" Heroku it's about creating some advancements about easier networking, packaging what defines as an app as multiple services, signed/secure builds.
After an acquisition products normally fail as large
companies are too sclerotic to adopt or even value new ways of working, so they just destroy what they don’t understand, often after paying a huge premium for it.
And then, Salesforce didn't really know what to do with it, and growth slowed down and good leadership left.
They collectively raised $13M through the Series B in May 2010 and were acquired for $212M cash in December 2010 (technically ~$250M for the whole deal).
A ~16–19x return, especially that early, is pretty excellent.
That speaks to the product itself and its future growth potential and place in the market more than current revenue.
Did we want to login to gus to open a support ticket on a VPN? No. Did we want to move into the SDFC offices that were cube farms vs. large ceilings with a lot of natural lighting?No. But could Salesforce help us make Heroku more available to customers and accelerate adoption? Sure.
Let's say that a product saves you 5 hours a week of developer time. If you're paying a developer $100,000, that should be worth around $12,500 to you, right? Except that people often don't see it that way. Yes, often they're being penny wise and pound foolish - they'll try to save the pennies on Heroku while spending dollars on developer time. But this can also be a bit of an accounting thing. Developer time can be counted as R&D while Heroku would be operating costs and cost of goods sold (I think, I'm not an accountant).
When Heroku launched, it felt like a great value. Fast forward to today and it seems quite expensive. $250 for 2.5GB of RAM and unspecified CPU? That seems to be 16x higher than Google Cloud pricing. I remember Heroku being $0.05/hr for 512MB at a time when AWS was $0.10/hr for 1.7GB. Sure, you'd need 3.4 Dynos equal one of those 1.7GB AWS instances, but that would only cost you $119 which is a 65% premium. Today, you'd need 3.2 Performance M Dynos at $800/mo to equal Google's 8GB boxes that cost $50. I think that stings a lot more and feels like something people want to look for alternatives to. In essence, it feels like an unfair markup.
It also feels like a company that has lost touch with the market. If Heroku has gone from charging me a 65% markup to a 1,600% markup, have they decided that acquiring new customers isn't important? Have they decided to give up and milk existing customers until they die? You can say, "no, we think we're charging the right price for the value we're providing and the time you're saving." That might be true while it also sends a signal to the market that you aren't trying to grow - that your path to profits is via heavy markups. While cloud pricing came down over time as servers became cheaper, Heroku remained almost the same on price. It certainly didn't match the changes in cloud pricing.
There were two roads: one where Heroku tried to grow marketshare at lower margins and another where Heroku kept pricing stable as cloud pricing dropped around them. Given that Heroku would have a lot of negotiating power with Amazon (and at the very least could get committed use discounts), they could make up a lot of margin there. But Heroku now just feels expensive.
The thing is that you're right that Heroku is still kinda the gold-standard for developer experience. You folks were awesome. But if I'm going to be running a bunch of services that need the equivalent of 100 8GB servers, that's $5,000 from Google or $80,000 from Heroku. When there's the potential for $900,000/year in cost savings, you start looking at getting off Heroku - and that's just with 100 somewhat small boxes by today's standards. Plus, buying direct from a cloud provider means I can get committed use discounts. The problem with Heroku's pricing is that it only saves you time/money when you're small. Do you want to build on Heroku knowing that success is really expensive there? Maybe, but it certainly isn't the "of course" that the old 65% markup offered.
I think companies are just operating services with a lot of scale today and today's Heroku markup becomes several engineers' salaries very quickly. Yes, Heroku means you can get a lot out of one employee. When you have 50 engineers and 500 8GB box equivalents costing you $400,000/mo...maybe you wanna task 3 of them to in-house a PaaS. Even if it isn't the gold-standard, there's several millions of dollars on the table each year. What's the sales-pitch for Heroku for a company running a bill of $400,000/mo? "We make your developers more productive." Sure, but we think we can get K8s and a PaaS team running for under $2M/year, spend $300,000 with Google, and pocket $2M+.
I feel a bit wrong writing this, but I think at some point Heroku is too expensive and it's so much cheaper to build your own in-house PaaS team. I think Heroku's high markup makes that tipping point sooner than later. Fly.io is charging me $92 for 2CPU/8GB which is an 84% markup over Google's pricing. If I have 500 8GB boxes, that's $46,000 with Fly or $25,000 with Google. There's $250,000/year in the difference. I don't think 1 engineer makes a PaaS team. To get the $4.5M/year differential that Heroku hits with 500 8GB boxes, I'd need over 107,000 boxes from Fly. Even to get to a $250,000/year differential, it would be 6,000 boxes with Fly. Yea, seems totally reasonable to spend 1 engineer's cost on PaaS markup with 6,000 boxes.
With Heroku, 500 8GB boxes means leaving $4.5M on the table. With Fly, 107,000 boxes means leaving $4.5M on the table. 107,000 boxes feels like a problem for me in the far future. 500 boxes feels a lot closer.
I really feel like I'm wrong and I've missed something, but I keep going over the numbers and Heroku just seems extremely expensive. Again, when it was young and charging a decent markup over AWS, it was such a no-brainer. Sure, give Heroku that money. Either you're small using a few Dynos and paying nothing and getting the amazing no-headache PaaS that makes you so productive or you're large and you're getting the equivalent of 500 1.7GB boxes for $60,000 when AWS would charge you $36,000, but $288,000/year isn't that interesting compared to what you're getting. Unless I'm missing something, Heroku's pricing has just gotten so high that even a bit of scale and you want to move off it. But I might just be wrong and missing things.
- Impossible to add HTTPS (with your own domain) unless you pay for the LetsEncrypt plugin,
- Impossible to add monitoring unless you paid the monitoring plugin,
- etc. for all the load balancer, the DB…
It means, as a guy founding a startup (now with 1m$ ARR), the initial dyno was $35-70/month, but I was afraid the upselling for all the 12 factors would represent 10x, 50x the pricing of the basic dyno. And that price expectation was unaffordable.
Think about this alternative:
- Sure you can use your own domain if you program the LetsEncrypt thingy in your dyno… OR use your $5 addon.
- Sure you can build monitoring in your dyno… OR use our $10 New Relic addon.
You may think I’m stupid, because in the end I’ll always use the paid solution, but at least I can run with extremely low expenditure at the beginning.
Launching a startup is extremely hard. You need to squeeze prices and make do with barebone services. I used DigitalOcean precisely for this reason, with Ansible deployment. I spent $5 a month for 2 years. I tried Heroku several times but it had limits everywhere (specifically background processes, while DO doesn’t have this limitation). Then money came and I went to AWS because it was cheaper and less limited than Heroku. Now the money is flooding.
I bet if we had 10x the revenue we still might've had the same outcome. When you're a relatively small part of a big corporation standard capitalism rules don't really apply.
Sure, it's a bit of a work, but the number of people who could set an ok server without paying that price is not low (also you'd be paying this for something that's almost a one-off work)