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.
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.
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…
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.
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.
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.
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.
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).
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
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
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.
Doesn't use containers, though, which many consider to be an anti-feature :)
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.
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.
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.
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.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.
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 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...
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.
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.
some of us are still there keeping her soul alive, and plan to do so for our customers for a long time.
git push # it just builds
Then: dokku enter # and I'm inside a container on the remote machine.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.
> 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.
I host my Node.js apps & databases (PostgreSQL, Redis) there and their GitOps is smooth.
In an alternate timeline where Heroku delayed adding Python support, the competitive pressure to keep the DX simple might have won out.
I’ve found their devex to be delighful and able to provide power without much of the conplexity.