Hacker News new | past | comments | ask | show | jobs | submit login
The Decline of Heroku (infoworld.com)
246 points by tacon 9 months ago | hide | past | favorite | 142 comments

Funny story around heroku and pricing.

I know a company that used to spend enormous amounts of money on heroku. Like, seven figures a year. The company was growing quickly, billion dollar valuation, raised hundreds of millions, etc etc.

One day the company passed the billing threshold that put them in the highest heroku tier, and someone in the org got an email from Heroku. The email was congratulating about all the incredible new customer service they would get now that they were spending more than $X a month (dedicated support 24/7, priority access to new features, that sort of thing).

The email made its way to some higher up who...hadn't realized just how much was being spent on heroku.

They switched to AWS a few months later.

Most expensive support email I've ever seen!

Along those lines, a few years ago I joined a company where they had just switched from Heroku to direct-AWS hosting for their infrastructure (to save $$). The devs had gotten used to the ease of Heroku deployments and Kubernetes wasn't yet a thing. So one of the DevOps team reimplemented the Heroku CLI as a massive, self-invoking Go monolith. It had everything from Jenkins scripts to a near-complete Mesos/Marathon client to to local Docker support built in. Many places (especially the CI code) it self-invoked to access other subsystems. Furthermore, it was the dev's self-admitted first Go project (previously he worked in Java).

Somehow this spaghetti-behemoth actually worked, and I spent the next year fixing bugs and adding features. We even modularized it enough to support deploys to either Mesos/Marathon or early Kubernetes. It still sticks in my head as an example of where somebody did everything "wrong," yet they still did it, and it ended up being extremely valuable to the company.

I think nowadays with k8s being what it is, and with all the tooling around it and increasing industry expertise—not to mention managed offerings—Heroku is going to have a hard time.

huge fan of k8s. drop what you're doing & use a cross-system object-storage/"apiserver" & control-loops to automate everything; embrace desired state management & thank me latter. but, Heroku &al have a lot of value left.

there's just not that many folk trying to tame deploys on k8s via gitops. flux2 is the rage, it's all over the alpha geek's efforts[1], but it's usually used by someone carefully authoring a fairly complex Helm file, then building out a significant Flux2 HelmRelease object (ex: [2]).

there's a bunch of other tools[3], & i'm frankly not familiar enough. but this idea of having a bunch of source that can deploy itself, simply, is still extremely rare even among the alpha-geek #gitops types. i'm sure some of these tools better match the simplicity of the Heroku model, corresponding branches to environments, which makes so so much sense, but so far i feel like such attempts are still basically unknown.

heroku's really simmered it down to something that made extremely natural sense. huge props to that. too too much of this effort had to go into creating buildpacks & supporting language environments very very carefully very actively, that ability to stealth-containerize an app & not even notice is so much of the special sauce that makes this a hard, hard & eternal problem (because langauges/envs keep changing). there's still a lot of ease of use to Heroku that's potentially will be underrated and/or lost by the oncoming generations. i have high respect for how operateable Heroku is.

[1] https://github.com/k8s-at-home/awesome-home-kubernetes

[2] https://github.com/onedr0p/home-cluster/blob/main/cluster/ap...

[3] https://github.com/weaveworks/awesome-gitops#tools

We've since moved to ECS, but we used Cloud66 for a few years, which provided a Heroku-like deployment experience on our own EC2 instances.

I dont get this sentiment at all.If you are paying people to glue Ops and Dev you are already not the main target for Heroku.

Heroku is for companies that are willing to pay for convenience.

Companies aren't static. I'd consider Heroku (or similar) to start, but once I had funding/revenue to support having ops, I would transition away.

However, once you have developed a workflow, going back in developer experience is hard, and hacks like these become common. (I saw a team do a similar tool to avoid paying for Cloud Foundry.)

I think the real mistake there is that they waited until that high bar was hit before reaching out - if they'd started the conversation earlier they might have figured out what discounts they'd have to offer to keep the business, got them on a long term contract etc.

We used Heroku for years and were spending around $2k per month (having increased from $1K a few months before) when we migrated the last stuff to GKE and our spending dropped to nothing instantly. I was pretty surprised to have nobody at all reach out to us to see why our spending had changed... Now we spend 7 figures on GCP instead.

Heroku solved a lot of problems incredibly well but they seemed to lose any ambition to be more than a salesforce deployment platform a few years after the acquisition and as k8s and other solutions have gotten better they just don't have a super compelling proposition now. I still use them to spin up side projects though as they still provide the best completely out-of-the-box experience.

lesson learned - don't ever remind a paying customer how much they're paying for their service. Just remind them of how well the service is running, and that they are getting exceptional support and other goodies.

One funny thing is, few years ago there was a promo video on Heroku.com homepage "complained" about the high price after an intensive praising for the platform. It's not that people just suddenly started talking about the price issue today.

Heroku is a great product, there is no denying that. However, relying on startup/small teams is kind risky. Some startups fail after awhile, those who succeed sometimes "grow out of" Heroku to keep their cost down.

I think what Heroku needed is a plan or two that can keep the both end happy, instead of offering a plan that eventually driving successful teams away.

What a strange story. Did the company not have a controller?

maybe you're a startup with two guys in the office, neither of you were business guys, start making money hire a bunch of obvious need to have guys - more programmers, sales, marketing - hurray we're a real business now. Accounting and all that is outsourced. At some point you realize you will get benefits from having someone track this stuff full time, but you can be making money and being a success for a long time before you reach that point if you started off not knowing anything about business.

I’m sure they were already planning the migration...

I still recommend that most startups use Heroku.

Engineers always complain about speed and price.

If you start comparing ec2 micros to Heroku dynos you already don't understand what Heroku offers.

Generally I will see small to medium startups that hire 3 devops engineers who barely have the bandwidth to setup a fully fledged deployment system e.g. pipelines, red/green light deployments, backups, stability etc

This all works from the get go with Heroku.

Most developers scale resources too early and don't go for easy wins like slow queries and any other latency related problems.

How many times have you seen developers recommend upgrading from Ruby to Go because of speed? When all they had to do was add some partial indexes or something to their database.

I've shown non technical CEO's in small startups to scale, rollbacks, view logs and restart their servers themselves.

I will always pull aside CEO's and tell them that their engineers want the best for the company, but that is only from their vantage point, the likely don't even know the companies inner financials, so how can they tell you something is "cheaper".

Focus on your companies core competencies first, get users, make money then let your engineers build their dream devops setup.

(If your startup does some mega processing jobs like ML then yeah you will want to use something like EC2)

Yeah, moving to AWS would save me ~50% in monthly costs (around 5k/mo) and I have friends constantly offering to do the grunt work to move over for free, but when you factor in the price of a devops guy (IMO needed on AWS but not needed on Heroku), Heroku still pays for itself.

I recommend most startups use Heroku. It takes a _huge_ scale to make moving to ec2 make sense in most cases.

I have a side project on AWS. It took me about a day to set everything up so I could boot a new blank instance & install everything in ~10 minutes.

Everything runs on the instance; a nightly job backs up the database to s3.

Deploying new code takes 15-20 seconds; if I want logs I can ssh in and look at them. The old ways of doing things work better than ever in 2021, thanks to cheap vertical scaling.

That's OK for a side project, but Heroku's selling point is that it's both easier to setup than that, and also has the resiliency, scaling and features you need for a proper production app. What happens if that EC2 instance dies suddenly or your EBS disk disappears, do you have point-in-time recovery for that DB? What about if you get an influx of traffic and suddenly need to scale beyond what a single server can do (which is admittedly pretty high). How about logging, deploys of a live copy of your site for each feature branch, etc? You can of course solve all those problems, but to solve all of them and do it as well as Heroku does will be a lot of work.

That said over time as the hosted k8s solutions have gotten better Heroku has comparatively become less compelling, plus while Heroku can get to a large scale, you will eventually start to run into limitations with what you can run inside a dyno which would force you to move to something else. Since you'll have a 12-factor app though, it's relatively easy to migrate, the hard part is finding a new platform which doesn't feel like a massive downgrade vs Heroku.

> What happens if that EC2 instance dies suddenly or your EBS disk disappears, do you have point-in-time recovery for that DB?

Nah, and that's a bit of a hassle. Yesterdays data will do in a pinch (they'll have to manually rekey a days worth of data and some might get forgotten, but that's what stocktake is for).

That said, it's been running continuously for 3.5 years without downtime so far.

> What about if you get an influx of traffic and suddenly need to scale beyond what a single server can do (which is admittedly pretty high).

This particular app serves a small business, and I'm quietly confident they'll contact me before adding more than 100x their current staff overnight. It's currently running on a t3.micro, but I'd expect upgrading to a p4d.24xlarge with 1tb ram, 8gb NVME storage and 96 vCPUs will handle it if they do.

> How about logging

If I want to read the log files, I ssh in and read them. Sometimes I even scp them to localhost.

> deploys of a live copy of your site for each feature branch

I don't need that for a project with one developer and one stakeholder - I can just share my screen and walk him through what I'm changing.

The key point being, you know how to do all that. Managing it is easy for you.

If you didn't know all that, how long would it take vs `git push` to deploy your website?

Startups live and die by the ability to rapidly test ideas and go with the ones that stick. Heroku removes the absolute need to have devops knowledge.

Having at least a tiny bit of DevOps knowledge can save you a ton of money. Actually setting up GitHub Actions with a special SSH key-pair just for the deploy in GitHub Secrets took me a few hours from 0 to full deploy of code. I haven't seen the code to build before as I was at that time just consulting, I was sick and haven't known GitHub Actions until then. The same setup runs for a year already, I joined the company in the meantime :-) We can push to production or staging (different machines) and it just works for what we need.

Heroku is great, if you just want to start with something and show a proof of concept. As soon as you are doing more than just that you will probably get the first steep bills (at least from my point of view). We actually migrated from Heroku just a bit more than a year ago.

Sounds like you two are in agreement

It doesn't have better resiliency, when you just need more RAM than it can offer at reasonable cost. I mean a comparable VPS is more than an order of magnitude cheaper. It is not the best advice to burn money on infrastructure, if you don't need to. Yes, start on Heroku and get some users first. Migrate to something else as soon as you cross the $50 mark or so, you will get much better performance and most likely stability for the same money.

Most companies I know wouldn't really profit from k8s much if at all. A handful of VPS's setup half automatically using Ansible and a few clicks will be probably just enough. You will know, when you need to scale out to many servers when k8s is probably the better approach. You will probably have people doing just that full time at that point.

Yeah, the thing is, you have to be specific about what you mean when you say "on AWS".

I have a side project on AWS that I deploy with capistrano, runs on a rails deploy that I configured by hand, and requires approximately 5 minutes of "dev ops" maintenance a month from me. Most of that is upgrading packages.

Switch that over to docker and terraform and who knows what else, and I wouldn't even have time to think about the project, but for the parasitic costs of the deployment infrastructure.

I'm 100% certain that n00b devs would mock me for my old man ways, but the old ways can scale quite far before you need anything else.

> It takes a _huge_ scale to make moving to ec2 make sense in most cases.

Our project has almost no traffic but the data processing part requires plenty of RAM. Literally with a few concurrent users it just won't work. And if autoscaling was enabled it'd be too pricey.

So I think it also depends on the use case. There are better PaaS alternatives.

Totally agree. My team has the main API made with Rails. Running on Heroku, with 2M active users, on 4 performance dynos. What does it take? Caching, Redis and async processing (Heroku/AWS). No devops. And we can still deploy with a button.

> How many times have you seen developers recommend upgrading from Ruby to Go because of speed? When all they had to do was add some partial indexes or something to their database.

PTSD flashbacks to when we had to rewrite a Javascript monolith in Go microservices because we didn't know about Dataloader.

My story - for a hobby project - is that I wanted to use ElasticSearch. Heroku's ElasticSearch pricing was per document.

I wanted to index billions of very small documents. Billions was in the "phone us" pricing category.

Switched to the smallest cheapest VPS I could find and that did the job.

More than 10k rows in your postgres? Better start paying!

Last time I used Heroku for a real project, I just put the database somewhere cheaper (if i remember correctly, Azure). With proper encryption+authentication and a bit of strategic caching, it was fine.

I use Heroku for an internal app and found their hobby Postgres sufficiently flaky that I now use RDS in the same region. For $20/mo on RDS, we get more than the $50/mo tier on Heroku Postgres and the latency isn't much different.

I actually would recommend not using Heroku (after we used it for the first few months literally starting from 0 users at that time) at all if you know at least a bit what you are doing. Just get a VPS somewhere and run on that. You will easily have way more RAM, CPU and disk for the same price so that you can be quite inefficient and still have a snappy backend. Doing backups more or less properly at small scale isn't a big deal either. GitHub Actions or such is just fine for build, test and deploy. You just don't need red/ green deployments, complex pipelines, high availability and such at the beginning. Btw. do what counts and don't do DevOps for the sake of DevOps.

I am not saying, hack everything together. If you have no clue about infrastructure, please use Heroku. :-) I am just saying, you can get very far with rather great performance, stability and security by using a VPS and some backup. You will learn some useful skills along the way and frankly, you don't have to care much about performance because even the second or third cheapest tier will be way more than what Heroku can offer at multiple that price. I mean "Performance L" in the Advanced tier of Heroku is ~ $500/ month with 14 GB RAM, I cannot see how much CPU/ disk etc. At OrgPad, we would probably need that one. The whole infrastructure, with disaster recovery and everything, costs so much less, we could run our infrastructure for a year with that much money.

And yes, languages are mostly fine with today's HW. Look at SQL/ IO first.

AWS has Elastic beanstalk and other services like (CodeStar or AppHero? I forget the name) that directly compete with Heroku. The UX is not as great as Heroku, but the price difference makes up for it. Heroku is still a great choice though. If only Saleforce were more aggressive... by keeping the service quality up while reducing the price.

Optimization is a form of debugging, which is a form of support/maintenance. Developers much prefer greenfield development, such as rewriting the entire thing.

Heroku has always had a place in my heart. It was, by far, the best way to deploy small apps. One `git push` to deploy. It just worked. The problem is that by the time you grow up and hire multiple people, you very quickly run into a point where hiring a devops guy is cheaper than Heroku. You hit this limit much quicker if you are doing something more complicated than monolith + database.

There is also something I like to call the Ruby on Rails dilemma. Rails is a beast when it comes to rapid prototyping and small teams. I don't think anything else comes close. But as your team and system grow, all the conventions that let you speed ahead in the beginning start holding you back. Now you are digging through Rails code and doco trying to find ways to override defaults without destroying everything else.

Heroku is the PaaS version of Rails. Small projects are super easy to get going. You don't get a better starting experience. But as you grow, all the conventions of Heroku that helped you launch with ease start becoming month-long expeditions for work-arounds. Worse, Heroku isn't open source. You can't look at the code to understand your issue. It doesn't take long for someone to lose their minds and spend a weekend creating a presentation on the benefits of moving to another platform.

I generally speaking agree with this in spirit, and I've been the one in the seat making the Heroku <-> AWS decision. But for the last 3 companies I've made that choice, the decision to move from Heroku to AWS doesn't start to make sense until the ~25 team member size and several years into the life of the company. It doesn't happen all that quickly, at least in my experience.

[Edit: so what I'm saying is the characterization of heroku is only good for very tiny teams/projects/etc has not been true for me.]

YMMV of course - depends largely on what you're building.

I agree with you for the Heroku of a decade ago.

Now, I'd say Render is the modern version of what Heroku was. It's super easy to use for Rails/Laravel/Node/etc, it doesn't break clustering of Elixir apps and static sites are free.

I keep seeing render come up, but every time I am shocked they paid money (I assume) for that domain name, as there will be no way to google "render rails deployment", "render react deployment" etc. What a horrible name for a company like this.

It's interesting you don't see it. I wonder what sort of profile google's made of you.

I get their website as the first result for both queries, both in my signed in profile and in a clean browser session over a vpn.

> it doesn't break clustering of Elixir apps

Interesting! I've been experimenting with Gigalixir for a Heroku-ish experience that supports Elixir clustering... I'll have to give Render a look and compare the two.

Unless you have a static site, in which case there are loads of options out there, there doesn't seem to be a free tier. Wouldn't fly.io be the modern version (I'm not saying heroku is outdated, I think it's still brilliant)?

I love Render. Really nice services, good UI, and they keep iterating.

What is Render and what is does?

It wasn't really as simple as that though. I set up a couple of apps on their free tier, and there is a Heroku way of doing this that was quite different from having access to a VM and installing and configuring things manually, which is what I was used to at the time.

Heroku is still the best cloud option for your typical developer-hustler-designer setup found in most startups.

Compared to other cloud providers their web app is a marvel of user experience. Monitoring, depolyments, scaling, docs, configuration, adding new services...It's all a breeze on Heroku. I dont't want to write scripts to orchestrate containers, I want to easily deploy, scale and monitor my app.

I spent 5x more time in AWS EC2 and Beanstalk and it's still daunting.

For me, the only downside of Heroku is its high price.

I have a Terraform stack for running everything in managed Kubernetes on AWS or GKE for less than the cost of a Performance M (or 5 Standard) dynos and it scales much more sanely than Heroku's pricing.

Yes, it was a huge up-front investment of time, but it will serve me forever.

New startup? I can have the infrastructure that will last us a couple of years up and running in like an hour (that's including setting up CI/CD and code review tooling and monitoring). Most of that time spent making the cloud accounts.

This sounds really handy. Have you open sourced it?

No, but I don't think it's significantly difficult to duplicate either. It's just the sum of my experience w/ various cloud providers and an opinionated/best-practices way to run things.

I sell my services and this is a huge enabler in my work. I don't necessarily see the benefit of outside contributors. As an educational tool it also kind of doesn't make total sense without context of how things work in the various cloud services.

So while I kind of want to, it's also sort of my competitive edge and interaction with the community is a drain on my time without adding much to my bottom line. That is to say, I've opened pieces of this previously and all it did was bring tons of demands on my time without any paying clients (and I already get enough inbound that I don't need more name recognition).

As a side note though, Terraform has probably made more of a difference to my career than any other piece of software. Shoutouts to Hashicorp, really. Consul, Vault and Packer also have been majorly useful but to a lesser degree. They've really put a lot of money in my pocket and that's the best feature any software can have. :D

I'm curious about your services ... Do you offer them à la carte or as a one-time IaC / DevOps setup or some kind of subscription or other? How is pricing determined? Do you have technical support and SLA?

Largely depends.

Most of my work comes through people/companies I've previously worked with and recommendations. As much as possible I try to set things up so they rely on their cloud provider for support, but most questions are either simple enough that I share my advice freely or can charge a day rate to do some work. I insist on working with at least one person to own the accounts & code/state (which can be like paid training for them). They may be paying for my knowledge/experience, but I prefer to leave them artifacts to reference after I'm done.

I charge reasonable contractor rates per diem.

I also have a full time job, so while I'd be open to taking a retainer to be available for immediate work, the fee that I would charge for such a contract is absurd. Basically more than my full-time employment.

Understood. I appreciate your prompt clarification. Will keep it in mind for potential future opportunities.

There's lots of cloudformation, CDK, terraform scripts open sourced, but they're a nightmare.

The script itself is probably 20-30% of the time, 70% is learning the underlying system/technology. Once you've got the learning out of the way, the scripts start making things super easy/fast.

A small plug for us (https://atomizedhq.com) but we're looking to actually solve this problem but allow you to run it in the cloud provider of your choice (starting with AWS). I think Elastic Beanstalk, Amplify, and other AWS always miss the mark on usability and experience.

Why people pay top $$$ for Heroku (taken from StackShare):


I don't buy this, of course if you run the NYT infrastructure you don't go for Heroku.

Heroku is still the best for smaller projects (and medium sized depending on the type of the workload) and devs that are not fully devops.

Sure, if you have a previous project where you can copy pasta your Terraform and Kubernetes setup from, you can start your infra just as fast, but otherwise heroku app:create and git push heroku master is still way faster to start hustling.

Everyone compares invoices between e.g. AWS and Heroku, but do they ever take into account the cost of the ops team when they switch to AWS? If the bill was 7 figures on Heroku with no devops, how many senior devops does it take to get the same spend with AWS? How about productivity loss if deploying is not as easy as it was before?

I think saying something is dead because it doesn't work in all use cases is not fair.

Render [1] was started just because Heroku stopped innovating.

[1] https://render.com

I was looking at render as an alternative to heroku the other day and I think that the only thing that made me think that I would definitely stick with heroku for now was the point-in-time restores for heroku postgres, which render seems to lack at present.

A point-in-time restore really saved me once (allowed recovery of important data after an accidental delete), but I am interested to know if other think I am over-blowing their significance in a production system? Are there other strategies which make PIT backups less important?

(Render founder) PITR is critical, and it's up there on our 2021 TODOs along with HA Postgres.

I've been thinking about switching to Render recently, but there's one feature blocking me: the ability to deploy an existing docker image from a private registry [1]. As far as I can tell, you have to connect a repo to deploy a Render service.. and monorepos are not fully supported yet either.

Is your 2021 roadmap public, or is Canny your official roadmap? Really interested to see what's coming soon :)

[1]: https://feedback.render.com/features/p/deploy-docker-images-...

Btw, I've been working at Canny for the past year and was pleasantly surprised to see your feedback site!

I recently noticed that DigitalOcean App Platform allows you to pull an image from a private DO registry. I haven’t had a chance to try it yet but I’m excited to see if it might allow me to delete some CI/CD infrastructure glue code.

Last time I tried Render I couldn’t find a way of easily deploying an existing image.

Yeah, DigitalOcean's App Platform recently added support for custom images this year [1] (I was also waiting for that). I'm currently running a $5 droplet for my service [2] powered by docker-compose, but really looking forward to deleting some bash scripts and going all in on Render or Fly.io :)

[1]: https://www.digitalocean.com/blog/introducing-bring-your-own...

[2]: https://puzzlepanda.com

feedback.render.com is as close to a public roadmap as we'll get. Big fan of Canny: it plays a big role in our product prioritization.

Private registries likely in 2021; we're actively hiring! https://render.com/jobs

Thanks for the response! Great to know it's on the way

I'm also impressed by render and am planning to use it fo my next side project. I use elixir heavily and render actually supports having teh nodes be connected to form a mesh.

Neither dokku, heroku or any other PAAS that I know if supports this and its really important for some of the more interesting features the beam offers such as pupsub without having to use redis. In my startup, we're using horde to manage a cluster of dynamically spawned children. We setup a kubernetes cluster on aws for this. Today I would look at using render instead.

Well, yeah salesforce bought them a decade ago. really just a play at lock in for salesforce devs.

I'm trying to use it but it can't access private repos even if my github account is linked. Not sure what's wrong...

Could you please email support@render.com? We’ll get you up and running ASAP.

Love Render!

So did Cloud 66

This article didn't make any sense to me. I didn't even see any actual numbers suggesting Heroku's revenues or userbase are stagnating/declining! The main arguments for Heroku's "decline" instead seem to be (1) cost; and (2) Kubernetes. But Heroku has always been aimed at organizations that want to trade time/money for ease of use along across a narrow(er) set of functions. Those are not the kind of orgs who use Kubernetes or want to devote man/hours (or employees) to devops. I think the "actual" argument is that Heroku isn't "cool" anymore.

In 2014 I started a company, and chose Heroku as the easiest way to get my (Go) code running in the cloud. Last year I started a company, and to my surprise, Heroku was still the easiest way to get my (Go) code running in the cloud.

I fully expected to be on a more 'modern' platform, but virtually every other provider requires at a minimum a Docker config. Docker has its purposes, but I can literally push an arbitrary Go/Python/Ruby/Node/etc. repo to Heroku, and it will be hosted on the Internet successfully. It's still SO much faster. As a comparison, I did need to get one project running with Docker and it legitimately took 16+ hours of developer time to get source control authentication working as a part of the build process.

None of that delay is a huge issue when you have limitless engineering resources, but for someone starting from scratch Heroku remains (bizarrely) the fastest tool out there.

"took 16+ hours of developer time to get source control authentication working as a part of the build process"

Probably best you stick with Heroku

I hope getting the opportunity to be a prick was worth the downvotes.

Good article. I would say Heroku’s problem is that developers are comfortable with more operational complexity now, fifteen years later, than when it launched. Much of this credit, of course, goes to AWS. Heroku serves an abstraction level that appeals to a smaller share of developers. It has also not grown beyond the Ruby world as much as was hoped for, as indicated by the mention of the Java ecosystem.

I use it pretty heavily for node.js apps. Every time I see the newest Rube Goldberg contraption for deploying code, my first thought is trying to figure out why they didn't do something simpler, like Heroku. Being comfortable with complexity isn't a good excuse for making things more complex than they need to be.

> Every time I see the newest Rube Goldberg contraption for deploying code, my first thought is trying to figure out why they didn't do something simpler, like Heroku.

Same here. After dealing with complexity of building an app the last thing you want is more complexity. And this time of a kind you're not comfortable with.

Obviously a lot of people were ready to pay to Heroku to hide that kind of complexity from them.

Possibly but particuarly on a small team there is a cost to operational complexity even if you're comfortable. If the team could be developing features but is dealing with an infrastructure problem that could easily be dealt with via an abstraction layer then you still lose overall developer productivity.

And Heroku was never a great solution once you reached a reasonable level of scale because it became expensive and your Heroku infrastructure became subject to unexpected issues in resource sharing within shared instances. Shared instances are a problem across all cloud providers but pure-AWS-sans-Heroku is easier and has more options to switch to private instances.

> developers are comfortable with more operational complexity

developers should never be comfortable with operational complexity. It's like saying javascript is a good language because you got used to the quirks and warts.

The best: https://12factor.net/ legendary. The worst: sold to salesforce. Salesforce smells like enterprise software, no room for fast and simple software hacks using heroku.

I don't understand the jump from the 12 Factor paradigm to being sold to Salesforce. Can you explain?

The guy who coined 12 Factor was the CTO of Heroku. 12Factor, to me at least, was the first blueprint for managing web services.

Ah ok, thanks!

I started messing with Heroku back when they were trying to be an online Rails editor. When they started getting more seriously into hosting I was relieved to have a company dedicated to making Rails hosting easy. But, every time I tried to host a professional project with them I ended up leaving early on because of slow performance, high pricing, and the fact that their system had limits that there was always some third party around to help solve for a fee. The fees add up. I started rolling my own configurations with Chef. It was painful. Then I tried Ansible, and it was easier to use, but I was still responsible for devops. I've come to realize that I will never be good at devops. I'm spending all of my time in application code. It just isn't what I do. And, most of my professional projects really don't have scale issues. They're mostly apps with small user bases that run great on a couple of servers. There's a sweet spot for Heroku here. Yeah, they're still slow, they still have limitations, they're still expensive... but on the low end of their price scale, it's hard to beat not having to worry about devops. (Saw a reference to https://render.com in the comments. Maybe I'll give them a try.)

What's wrong with Heroku? It hasn't changed much, like the article says, and that's fine.

The pricing model isn't ideal but it has a place for some projects.

I love Heroku, I still use it to this day for a couple databases. That being said, when a company stops innovating you know it's just a matter of time until they're left in the dust. The thing is, Heroku is currently increasing profits, they could use that money to innovate if they wanted to. They just seem stagnant, which is never appealing as a customer (at least to me).

It is combination of no innovation and the pricing model. The pricing model only ever made sense for hosting RoR applications due to particular sub-optimal performance characteristics of RoR at the time. Ten years ago you could get one meaningful VM instance for the price of one dyno and host anything you want on that but you had to somehow make that work. Today the price of one heroku dyno buys you one or two VMs where you just deploy docker compose or whatever (as long as it does not involve etcd, because then you are outside of the "free/cheap VM instance" category) and are done with it.

For me the notorious price tag of Heroku is enough to keep me from using it for new projects, even though I like the Heroku workflow and I think it's perfectly suited for many web apps.

Heroku is comparable to AWS Fargate/RDS pricing in many cases, but easier to setup/understand/maintain. IMO it seems reasonably priced in a lot of situations, where we are talking about business use.

However, for personal use, if you have a few small (web)apps, it's way too expensive compared to a DigitalOcean or similar VPS.

For example, 3 applications with Postgres DBs cost 3x(7+7) = 42$/month, whereas it's entirely possibly to run this on a 5$ DO droplet.

Tip for that situation: Since Heroku runs on AWS, you can just use a single RDS DB instance to serve as the database for a bunch of hobby instances. Really hard to beat the $5/dyno hobby pricing considering the feature set.

Well, the 0$/dyno pricing on Heroku for free projects beats that easily. When Redhat OpenShift threw us out, Heroku was the best place left for free perl hosting. Lots of good places for static hosting, mostly GitHub Pages, but dynamic Heroku is still the place to go.

> it's entirely possibly to run this on a 5$ DO droplet.

In fact I do exactly this using Dokku, and have several small apps running in the same $5 droplet.

Alternatively, you can scale with caprover, which can deploy to many servers using Docker swarm

Dynos specs are pretty miserable, need a 4GB dyno? that will be $500/month

It's 14GB for $500/month. Still pretty expensive though.

Heroku had developer mindshare 10+ years ago that could, in some alternate universe, have made it end up competitive with AWS/GCP/Azure. Heroku is probably worth a billion dollars, which is impressive, but it could have been a hundred billion. It’s worth asking why that didn’t happen.

> It hasn't changed much, like the article says, and that's fine.

I think that is the problem. On the outside it has not changed much and thereby loosing traction and customers.

They have added things but apart from pipelines quite a few years ago nothing revolutionary has been added.

The only thing I can think of is that they made it harder to use when they changed the pricing for their free tier to be per user and not per app.

Heroku is certainly "expensive" if your comparison is "I can make it at home for nothing". But our time has a price as well, and honestly the only thing young companies or projects should be doing is spending time getting customers and revenue. Deployment ops is a later stage activity.

When you tip over that threshold from "default dead", that is, non-revenue focused activity won't kill your company in 6 months, then and only then do I think it makes sense to switch over from Heroku to something else.

I still use Heroku all the time, and recommend it to clients who are starting out as well. (Just like how I recommend buying a $10 theme for design instead of wasting money fiddling with a designer/design team).

You need to determine product market fit, pricing, and distribution first.

I haven't seen anyone mention: dokku [1], but I've had good luck using dokku droplets on digital ocean for a simple Heroku alternative.

[1] https://github.com/dokku/dokku

Hi! Not sure why this was downvoted, since it was both on-topic and indeed simpler (I'm the creator).

Need a 2mb Redis instance? 50$ per month

Maybe I'm missing the joke, but the free Redis instances are 25MB.

Where do I sign?

I love Heroku. But I hardly use it anymore.

For personal use it was excellent way to spin up an app and see if it is useful etc. That part I had to stop doing because they changed the free-tier pricing model. So I had to sunset most apps, keep a couple on the free-tier and Hobby-tier, but with no room to add new apps.

For work use it is useful for demos and some small apps. But the main problem has always been scaling Heroku apps beyond a single monolith. Most work projects split and scale across a lot of apps/services etc and that stack part was never easy with Heroku.

So for my personal apps I now have an overkill of a K8s cluster (or 2, maybe 3...) that I chuck all my new apps in. As someone with k8s skills that is ok, but obviously I know that Heroku did 1000% other things in the background that I now have to do myself, and pay for...

With Digital Ocean and AWS Lightsail offering “App” platforms Heroku needs to bring greater value to compete. The pricing alone was enough for me to avoid even though my hopes about necessary scale never came to fruition.

Lightsail has an app platform?

Lately I was thinking that probably something like 80% of what developers really seek in a solution in this space, whether it's based on k8s, Heroku, serverless, VPS, Chef, Terraform, whatever, is the deployment tool/experience. Everything else is just extras and doesn't affect much the core value proposition.

We want deploys that are reliable, transparent, that can roll back in face of issues, that support gradual blue/green strategies, etc. That's what makes an overall 'platform' good or bad.

Surprisingly, that specific problem isn't very often isolatedly tackled: too often is coupled to a whole platform, a pervasive set of assumptions (you use containers/dynos/VPSs/etc).

AWS CodeDeploy seems to fit the bill well. But AWS being AWS (with a history of leaving certain products neglected) I just don't trust the implementation itself. I cannot see its changelog, issue tracker, assess its internal quality, etc.

So I would really love to see some open-source CodeDeploy clones, with a scope as small as possible and the highest possible internal quality. It could be a game changer.

Thank to the Heroku pricing back in the day, I learned how to host and manage my little setup on my own on Linode.

Recently I've moved to K8S on Digital Ocean and I could not be happier.

To everyone complaining about the cost of Heroku hosting and wishing they could have something similar but cheaper, consider sponsoring or contributing to the Dokku Kubernetes scheduler [0]. You get a similar deployment workflow to Heroku and the scalability of K8.

[0] https://github.com/dokku/dokku-scheduler-kubernetes

Just going to drop a plug for my open source pet project:


I can recommend CapRover as a Heroku alternative: https://caprover.com

I have switched from Heroku to Cloud66 + Digital Ocean and it’s great. I have the same ease of use of Heroku but at a fraction of cost

Digital Ocean App Platform and Render are both easy to use and a lot cheaper than Heroku.

I think Heroku was something contained to US, or maybe even narrower. Never heard or seen EU company hosting on Heroku.

Out of the box you get EU or US hosting.

You can do others (eg West Coast US, Japan, Australia -- it's all just AWS regions under the hood) but to do that you have to be in a 'private space' which is effectively a dedicated clone of the Heroku management infrastructure.

If you were paying a few hundred dollars per month you're now going to be paying a few thousand. IMO Heroku is shooting itself in the foot with this price structure.

It’s well-known in Europe too, but business devs in Europe are always more conservative and tighter with money, so Heroku just looks too expensive for most of them. When it’s cheaper to just hire one more guy to look after your infra, than to tie yourself to a single provider, people will do that.

Ironically, when I first heard the word Heroku my immediate association was "this is something French".

Why would you think this is French? I can't think of a single French work with a "ku" ending. On the other hand, it is a trope to mimic Japanese speakers by adding "ku" at the end of words.

If you translate phonetically from French it means "air at your ass".

Air au cul..

Some providers are rolling out http/3 support and heroku still hasn’t supported http/2.

Heroku is supposed to be easy for launching prototypes yet it's a PITA for Django, one of the most popular prototyping frameworks, since they never bothered to build native static file support (their "whitenoise" suggestion creates really crappy performance, so you're forced to setup a whole new static server). Heroku basically exploded in popularity for support of beginner programmers, so idk why they are intent on alienating that group.

nginx buildpack + python buildpack == nginx to serve static content and gunicorn for the python backend. Of course you now have to know how to set up an nginx config file so it does take away somewhat from the "just works" simplicity of Heroku.

Although even whitenoise is still ok if you're going to set it up with a CDN as the frontend for your static assets. If you want simplicity then you do it using one of the CDN addons.

Whitenoise is not a limitation of the heroku platform, it's really a symptom of suboptimal documentation.

Most projects will run with cloudflare in front, which takes care of static caching.

Has there ever been an analysis of why Heroku was (and still is) so DAMN expensive? Just a bad pricing model or something unmagical about their environment?

The article misses the point. Heroku is for small companies. If they try to get enterprise customers, they will become too complicated like AWS and lose focus on their small customers. Heroku is important for innovation in our society. Greed-focused Silicon Valley VCs would pump it full of money and destroy it. I hope Salesforce doesn't do that.

Heroku is perfect as it is. Let's not mess it up.

DigitalOcean App Platform is a compelling alternative to Heroku with the simplicity of Buildpacks and reasonable pricing.


Are there other PaaS providers with Buildpacks support?

I use heroku for the majority of my projects. I tried DO app platform a few months ago, it was garbage. I wasted an entire day migrating my heroku rails app to DO only to come to realization I am much better off paying for heroku

Agree +10000

i keep hearing extravagant claims about how much revenue Heroku brings in post acquisition and the best this article does is "hundreds of millions" - does anyone have better information than that? perhaps from salesforce public statements?

Vercel is the new Heroku. Same ease of use, MUCH better architecture and cost structure.

I'd just want a PaaS with easy-to-use rate limiting and caching (e.g. for some routes use Redis if unauthenticated otherwise go to the backend, for other routes cache forever)

disclaimer: I've been building https://www.powertools.dev/ for about 10 months. We let folks ship apps to AWS/GCP with a single command.

After talking to >200 founders, basically every startup wants the Heroku developer experience but AWS is just giving way too many credits for anyone else to compete. Some companies literally aren't paying a dime on cloud hosting until year 2.

How would one install powertools to try it out? All links off the main landing page take me to an "under construction" page.

The "under construction" page gave me a mild case of nostalgia for 90s Geocities. :)

Edit: nevermind, found the installation shell script right in front of my nose on frontpage!

Edit 2: I think you have issues hosting your installation script:

    curl https://powertools.dev/install.sh
gives a 301 response.

    curl -L https://powertools.dev/install.sh
returns the landing page (I think - didn't look too closely at whatever HTML it downloaded).

Why isn't there a Heroku knockoff that gains traction?

Can't someone support the Procfiles (if I recall correctly), undercut prices and still have plenty of room to be excellent?

There are many knockoffs but few gain traction because once they go beyond just basic hosting element as a PAAS to all the millions of things Heroku do behind the scenes they realise they either need to increase prices beyond Heroku or stay as limited knock-off.

I don't know of another PAAS that directly supports Procfiles, Buildpacks etc but I don't think they are the parts is what prevents people from migrating anyway.

Both statements don't make sense to me. If a PAAS doesn't directly support Procfiles, Buildpacks, etc then it's not a clone. And not supporting these files would be precisely a great reason to not migrate, how/when would you want to make that investment into some other configuration/deployment definition that you can depend on existing beyond the cheaper hosting company you're considering using.

Its not going anywhere, I'm yet to see something as accessible for link a GitHub repo & forget kind of a solution

Heroku is fighting full fledge CI and full fledged CI is getting better faster than Heroku

One word: Salesforce.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact