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.
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.
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.
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.
The point was to call into question their misplaced confidence.
Not only were they wrong, they stated it boldly.
They had no grounds to “strongly suspect”
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.
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.
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.
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.
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.
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)?
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.
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?
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.
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.
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.
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?
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 :)
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 :)
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.
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.
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 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.)
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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
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?
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.
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.
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!