back
196 comments
This is a little off topic, but I was actually the first user of Heroku [1]. It emerged from the terrible experience of trying to run Ruby apps at a consulting company I worked at called Bitscribe back in '06-'07. The three founders of Bitscribe (Adam Wiggins, Orion Henry, James Lindenbaum) spun off to build a web IDE with automatic app building and hosting, which eventually became Heroku. The old idea was that you could use Git to download your code from the web IDE, and eventually got developed into the experience we all love(d?).

Adam Wiggins, one of the three founders, was one of my favorite software engineering mentors back when we called it programming - as an example, he wrote an early rails plugin called "axeman" for the consultancy that would list controllers and actions by least-often-used, so that we could remove functionality that wasn't worth clients paying for. He also got me introduced to Vim, and another coworker there (Hi Simon Michael) demonstrated for me the orchestral nature of a true Emacs master operating at peak capacity, so I blame them to some degree for being stuck in the DMZ at the middle of the IDE war.

[1] The reason I know I was the first user was that in October 2008, Adam sent me an invite to try out Heroku and there was a classic rails error - they forgot to skip the before_filter for authentication on the "accept invite" controller and action. Bug quickly fixed, but definitely a funny anecdote. Even on day one it was obvious they were going places - I would have blind invested money into whatever venture those three were working on regardless of what it was.

Heya Justin :-) Thanks for the walk down memory lane (I had totally forgotten about axeman!) and the kind words.

A bit of nuance on the "terrible experience of trying to run Ruby apps" bit. I'd argue that the setup process for Ruby/Rails in 2006 was not all that much worse than other web stacks at the time e.g. Java/WAR or Perl/cgi-bin. (Although PHP+Apache+mod_php deserves a nod for being notably smoother than most others.)

What inspired us to start Heroku was that once we switched from building apps in other languages and frameworks, development time was reduced by a factor of 2 or 3; but deployment time stayed the same. That is, before Rails we'd spent maybe three months developing the first version of the client's project, and then 4-6 weeks on deployment. (This was usually buying and installing a rackmount server into their office or colocation facility, but sometimes also waiting for a managed hosting service to do the same for us. For small projects we could use Slicehost but those were infrequent because our clients usually needed a powerful database server.)

Once we were developing with Rails, we found v1 could be done in a month or even less. It felt incongruent to spend a month on developing the app (the differentiated part of our work) and then longer than that getting it deployed (the undifferentiated part).

There's many other inspirations that were part of the story (end-user programming / citizen developer, which led to the web IDE you talked about) but this was the "deployment pain" part of it. It sticks in my mind because we frequently had to answer the question from prospective investors: "Is Rails really that hard to install?" And we'd say, no, the game has changed--development is so much faster and joyful now, that by comparison our existing ways of deploying feel slow, error-prone, and boring.

I really love that idea of pruning unused and redundant usage of endpoints. You could take that functionality and apply to to whole application features in the UI too for example.

It’s inspired me a lot. I assume this axeman had to integrate with either logs or analytics to get the usage counts?

I’m not sure such an idea would even work these days at large organisations following the Big Agile TM nonsense, imagine trying to explain that to a dozen or so product owners and scrum masters…

I think Heroku's aggressive pricing is the main driver behind making them obsolete. I honestly cannot believe Salesforce is so short-sighted with Heroku. Their approach is "Milk it as much as we can until everyone just abandons it for cheaper solutions/clones".

Had they become more competitive in terms of pricing, a large, large chunk of companies would've used them rather than moving to solutions like Kube, etc, or a bunch of Heroku clones which are now taking off as it's being considered a "Sinking Ship".

Just see this:

https://blog.porter.run/why-companies-move-off-heroku/

The reasons they are suggesting [that companies leave Heroku for] (besides the costs) are a bunch of non-reasons and small nuisances. The main reason is the cost, and the cost issue will become bigger and bigger of an issue as competing solutions get cheaper and cheaper, until Heroku is completely sunk and abandoned.

We are still using Heroku and I really hope they would fix the pricing before we bite the bullet and just spend a couple of weeks moving to a cheaper alternative. There's no vendor lock in on 12 Factor Apps you see.

Former employee, and you're wrong: pricing had nothing to do with it.

In 2017 we went under a feature freeze and no new features were allowed to be worked on. Anyone can look at the Heroku Changelog to verify this yourself (of course features that were in progress still rolled out over some of 2018). We had tons of attrition (without backfill) and even a layoff afterwards. Heroku is probably 1/3 of what it was at its peak around 2014.

SFDC gave up on us because we wanted to build a developer platform and they wanted us to build an enterprise platform. We sucked at enterprise features so they gave us the axe.

So the biggest Heroku clone I can think of is Google's App Engine, and it's complicated for no reason. The most comical example is storing/accessing secrets. What should be something like `heroku config set MYSECRET=foo` is instead an entire tutorial on setting up a separate key management system and configuring GAE to use it, which cutting every corner still took me at least 2 hours.

It's like this all the way. Postgres is one click on Heroku, a miniature ordeal on GAE. Yeah I can handle it, but why. Maybe I don't have the patience and there's some light at the end of the tunnel. I thought maybe that light was gRPC, but turns out App Engine ironically can't run gRPC services.

I was never sure about this. Sure, they're more expensive than competitors but for a lot of uses they worked out cheaper than the alternatives in almost every circumstance.

We were able to support _hundreds_ of applications, scale up at a moment's notice (applications were _very_ spiky traffic) and we didn't need a single member of infrastructure staff. We had engineers with _some_ backend-heavy knowledge, but nobody who could really get in to the guts of an infrastructure problem.

We charged Heroku out at cost to customers on top of our daily rate and it's barely a rounding error except for the largest of projects.

Don't get me wrong, the overall issue is that Heroku just isn't actively maintained anymore and that's going to put off new customers (as it should), but for those heavily invested in the platform right now, cost is not a factor that will be pushing them away.

While companies move off Heroku because of the pricing, there's still a huge addressable market there given that the Heroku ecosystem (including all its addons) is much more extensive than other similar services. The OP discusses this (that's what the "magic" is all about). Plenty of folks would be willing to pay the Heroku premium if new features were being actively developed, the addon ecosystem was continuing to expand (and addons were kept up-to-date), and the general reliability of the platform wasn't being questioned.
But are there any good alternatives to heroku that have a similar approach (i.e. not spinning your own VM) ?
Contrarily, I think there are many heroku customers who would be happy to keep paying for it if they just kept actively investing in it. Maintaining it and delivering new features necessary to keep up with the changing environment. But, they are not.
How much do they charge?
I was introduced to Heroku at a hackathon, a few months before graduating college, when it was still in its prime. I was instantly hooked, and from there I went on to use it for every single solo project I’ve ever put on the internet (including a website for a small business that’s been working reliably for ~6 years now). I loathe everything about working with Docker, Kube, AWS, etc. Heroku was designed for people like me.

I still haven’t taken the time to research an alternative for future projects. I’ve had a sense the time has been coming, but I’ve been putting it off because it’s going to be a pain, and because it’s probably going to make me a little sad no matter what I land on.

Salesforce can go fly a kite.

PS: I just remembered I have a pretty good story about Heroku and that small business site I mentioned.

Originally I had the source for that site on Bitbucket. One day, I went in to make some changes and found that Bitbucket would no longer let me sign in without first converting my account to an Atlassian account. Sigh. Fine, whatever.

Well- the account migration got botched, and the end result was that I was locked out. I went through support, they couldn’t figure it out, etc. Just totally lost access to all those repositories. And I had a newish computer that didn’t have them locally stored yet. Luckily this was the only important one on there, but… it was quite important.

Then I remembered that Heroku has you push to a git remote.

I was able to recover the entire source code for the site from my Heroku app by cloning the git repo that it offered up as the deploy target.

Heroku saved me (and needless to say, I’ll never be using Bitbucket again).

Exactly the same thing happened to me (though not with BitBucket) - I'm glad you too were able to find relief!
> I wonder if we'll ever really have something like that on top of Nix or NixOS.

Xe, go do it! (:

In all seriousness, Fly.io has explored this path (and very well may pursue it depending on RoI of going down this route, I'd imagine): https://github.com/superfly/recco

Even though I'd like Fly.io to be more like Heroku, it is railway.app that comes the closest (but I believe they use buildpacks like Fly.io does rather than Nix/NixOS).

Speaking of Nix, shout out to replit (https://blog.replit.com/nix) for having a holistic view of the product and it is unlike anything I've ever seen before. And unsurprisingly, most junior developers that I interact with, prefer replit over other alternatives.

Heroku may be dead, but an entire range of upstarts have risen up in its wake: https://www.swyx.io/cloud-distros

I've been considering doing something like that but I am not at a point in my life to be risky like that. When I have permanent residency or citizenship in Canada maybe, but until then I'm happy to just be an IC at Tailscale and write out these articles on my blog as the spirit moves me.
Render hits a lot of the sweet spots for me that Heroku used to…and they offer real HTTP/2 support, non-absurd pricing, and more. I’m a fan. https://render.com/
The decline of Heroku is a shame, they were the first to really make cloud accessible to all.

Over at Northflank (https://northflank.com), we're trying to continue that trend and great developer experience is our main priority. We address many of the same points you mention - simply `git push` to build and deploy (using Dockerfiles or Buildpacks), instant free DNS & TLS, one-click addons (Postgres, Mongo, Redis...), environment variables inherited from databases, and much much more - all with sensible pricing.

Feel free to check out what we've been building at https://northflank.com/changelog

Something I miss in particular about Heroku's git-push-to-deploy experience is that you'd know whether the build/deploy succeeded by the time the push finished.

Modern “GitOps”-based deployments that rely on webhooks or polling are fine, but it feels so disjointed to me to `git push` and then have to go watch some other system to see if the deploy succeeded.

If you're interested in rolling your own mini-Heroku, check out https://github.com/piku. I created it with the intent of having a similar experience and a very tight loop between writing code and getting it running, and it's been great bang for the proverbial buck (~1500 SLOC altogether).

Doesn't use containers, though, which many consider to be an anti-feature :)

> the way Heroku worked…

The author implies that something has changed — and that nowadays, you can’t `git push heroku main`. But according to the docs, it’s still just as simple.

I guess I don’t understand how Heroku’s DevEx has changed. Seems just as intuitive as it’s always been. But I could be missing something.

Heroku is the gold standard of running apps.

With every new company I work for or with, I always try to take small step to get closer to that setup.

Whatever contraption you may create on top of AWS, GCloud, Azure will never have the same smooth experience, but if you've experienced Heroku, you can at least try to get better logging accessible with a simple command, buy managed databases, use env vars instead of messy configurations / secrets management systems.

Now I'll go back to debug my K8S pods, hopefully I can remember the sequence of kubectl commands I need.

This article doesn't really lay out what - from a customer perspective - would class heroku as a sinking ship? The DevEx is still great, the alternatives are either borderline ridiculous (K8S is a laughably complex beast in comparison), or not fully cooked yet (fly.io, render etc.) I know that it's expensive, but it's nowhere near the price of having an engineer manage cloud infrastructure full-time.

I would love Heroku to have more reasonably priced compute. I'm desperately hoping that genuine competition in this space will pressure Heroku into sorting this. But the frequent refrain recently that Heroku just doesn't match with my experience in recent years. When the alternative PaaS solutions offer a comparable postgres service, then we'll have a genuine competitor. Until then, I'm not sure I really grok the level of disdain for it that's been on HN recently.

I have more or less this experience right now with both Google App Engine and Digital Ocean App Platform. For GAE it's driven by Github Actions, for DO it's built in. Either way it's just:

    git checkout production; git merge master; git push
It doesn't take much wiring to set it all up. Heroku is great but it isn't the only PaaS.
This article resonates pretty deeply with me, an engineer at a different company Salesforce acquired years ago that, like Heroku, "had resisted integration into the larger Salesforce organization and as a result was really really starved for headcount."

I joined right when the organization was starting to give in and integrate more, largely out of a combination of need for resources and OG execs having been either replaced or else "org-chart-subjugated" by Salesforce execs, whose influence grew stronger over time.

I'm looking towards the door a lot these days. The last few years have been a slow downhill slide, but the last month in particular feels like the edge of the slope where it becomes a straight drop down into the abyss.

I've been brushing up on leetcode and polishing up my résumé. As catharsis and to help me process the stress and everything I've been feeling at work lately, I even wrote up a "goodbye" letter in my _personal_ Google Drive account, and I guess this article's author had the same feeling as me, because "my coworkers have left the sinking ship, and it's time for me to get on a lifeboat too" was the exact analogy that came to my mind, which matches the OP's bit about "the ship has been sinking for years but the culture of Heroku really stuck around long enough that it was hard to realize the ship was sinking", and I've felt the same sad realization that the author expresses here as "The Heroku I joined no longer exists. I joined Heroku but I left Salesforce."

I joined $acquisition, but my reasons for leaving, once I get it all all lined up, will be Salesforce. It doesn't help that Salesforce has committed to a long-term project with the explicit goal of making $acquisition no longer exist. That just confirms the reality of what I've experienced as being an intentional choice by the company rather than an accident.

As someone non-technical, Heroku is what helped me launch my first production site. It was really like magic when I discovered it existed, because I was intimidated by AWS. It's sad reading accounts from employees, seemed like a great place with great product.

Hopefully, competitors can match them, what I've read is that they are a bit less mature than them. I actually still have a production site, will need to move off soon.

I've got over 130 apps on Heroku for my various SaaS products and client websites etc. I feel like I'm going to experience a world of pain very soon to migrate away to another provider... I just took a look at fly.io and they seem too dev-opy for my tastes these days.

I opted for Heroku after going down the whole Linode route years back and have never looked back. I enjoy the simplicity of deployment and not having to worry too much about servers etc.

I recently got to play with Render and DigitalOcean's App Platform and they were okay... just not sure if they'll be suitable for Rails (Postgres/Redis etc). I want something straightforward like Heroku, but without the issues of late. Oh and the costs...

Heroku was paramount to "proving" _what_ developer experience was at the earliest stage of my career.

Because of Heroku, anytime I build products for other developers, I put so much time and effort into trying to design something intuitive to use to for the domain.

Honestly just use Cloud Run on GCP.

Push code to GitHub = gets deployed (via buildpacks so no dockerfile needed unless u want one) behind a load balanced tls domain.

Wanna use env vars? It’s right there in the ux.

Prefer to use “secrets”? Right there in the ux.

Want SQL? CloudSQL is around the corner.

“ The body of Heroku remains but the soul has long since fled.”

some of us are still there keeping her soul alive, and plan to do so for our customers for a long time.

I still have the same experience with dokku. It's magical.

  git push # it just builds
Then:

  dokku enter # and I'm inside a container on the remote machine.
7 Years ago I blogged about if the Platform as Service business model is dead [0]. The PaaS hosting market share by Gartner was never met. Many startups in the space died.

We (fortrabbit) are offering "PHP as a Service" for more than 10 years now. It works for us as a small business. I am happy to see new services serving the same itch getting created today.

[0] https://blog.fortrabbit.com/cloudscapes-rerevisited

These threads always have plenty of great suggestions of alternatives for just getting started or hobby development. What are people using for mid-range stuff? I want the features and ease of Heroku, without having to build it all ourselves on top of AWS directly. Something on the order of $1-5k/mo spend, more than a "hobby", but not enough to justify a devops team wearing pagers.
Bottom of the article tells me I shouldn't have been able to see this yet, especially here (edit: right... timezones... nevermind):

> If you're reading this before the 12th, welcome to an experiment! I've been wondering about how to make some of my posts Patreon exclusive for a week. This post was published for my patrons on the 5th of May. Please don't share this link around on social media until the 12th, but privately sharing it is okay.

For EU-based PaaS, check out Clever Cloud. They are based in Nantes, France and have servers in France (Paris, Roubaix) and Poland (Warsaw), and other locations outside the EU.

I host my Node.js apps & databases (PostgreSQL, Redis) there and their GitOps is smooth.

https://www.clever-cloud.com/

There was a period where there were a bunch of "Heroku for Python" startups (eg. Gondor.io) that were gaining traction and approximating the Heroku DX. As soon as Heroku added support for Python, they all deflated.

In an alternate timeline where Heroku delayed adding Python support, the competitive pressure to keep the DX simple might have won out.

I'm working towards building the best possible experience for hosting multiple sites on a single machine at a fixed price at https://acrobox.io. Abstracting Docker didn't make the cut for my MVP but it may be the right fit for some of the commenters here.
Whenever I talk about Fly.io people ask if it's like Heroku. But I never used Heroku so I can't say. Is it?
It's like after heroku everyone just decided to make things as complex as they can get and now we are stuck with overpaid devops departments that should not be necessary and AWS bills that leave us in tears.
surprised not much mention of Elastic Beanstalk here - it has nearly an identical dev experience to Heroku. I moved past using it years ago but if I was looking for exactly that experience I'd probably go with it or if I was using Elixir likely I'd use fly.io because they seem to have it down pat for elixir/phoenix projects the way heroku did for ruby
I think the modern version of this is render (render.com)

I’ve found their devex to be delighful and able to provide power without much of the conplexity.

Why did Salesforce acquire Heroku? I don't see the business logic.
Why not use Render.com or Fly.io? There are many competitors nowadays.
Author of the article here if you have any questions
Vercel
Before being hacked.
use fly.io!
I miss when people that wrote docs in markdown actually converted them to HTML as intended.