Heroku has been an absolute dumpster fire. Every time their name comes up I can't help but mention that they deleted my account for inactivity, but have still been charging my credit card. No easy way to cancel because... they deleted my account.
I have my startup with them and pay them a hefty bill. I had my personal websites on a second account (that should have been a free plan - one deploy every three years, next to zero traffic), and they deleted them and continue to bill me.
I've had multiple customer service interactions asking them to stop billing me and they're nothing short of rude and unhelpful. "We've told you the dozens of steps to take to get us to stop billing you" kind of responses from their top CS head. (Paraphrasing that quote, though I'm sure "we told you" is verbatim).
I think I tripped their janky system up when I started scaling one of my personal projects into a startup. I converted my personal account into my business account and moved my personal websites into a new account. This totally botched their system. The thing that gets me is how unhelpful they've been in dealing with the matter. It's not like any of this is my fault.
As soon as I get bandwidth to take my startup elsewhere, I'm gone and I'm never looking back. It's amateur hour over at Netlify. They're downright unpleasant to deal with.
I have been mulling over switching from Netlify to Vercel for a while for my personal site too.
Netlify has weird defaults for everything. It caches almost nothing by default. I had to create a Netlify headers file to tell them that actually yes I would like my CSS, JS, and fonts cached.
Absolutely absurd I had to do that. Even for font files. Because as we all know, the font files change so often that we should never cache them /s
All manner of dumb things like this. Really the only thing keeping me on Netlify is that it has for handling built in. That and fear of changing DNS settings (I use Google domains).
I’ve always thought positively about Netlify. About to launch my startup there as well.
I was thinking about using their identity and access plug-in to build out member access only pages. Would Render have this capability? Or any other non-code recommendations?
But don't do it if its Google. I had been charged for g-suite for domain that expired and someone else picked it up (and parked), long story short after 3 months of back-and-forth with "support" I gave up and started with chargebacks. It was 7 of them, each month one for $6, until one sunny day I woke up and my own gmail account, my youtube TV and Google Play on 2 Android devices all got blocked with messages popping up I never seen before. Also my friend - who used my wi-fi plenty when we worked on a project together, got his gmail frozen with equally weird messages with no answer how to appeal or follow up. Just middle finger and good bye.
edit: and no, they did not stop charging me for youtube TV. I actually had to get a new card number for my credit card for them to stop.
This is why I use the git commit short hash as part of the identification of the service (eg: container name).
Allows for quick check of which is the running code version and identify problems like these.
Kinda refreshing - within the ever growing genre of stories about Heroku's downfall into junk status - to find such an article with a higher level of detail and analysis of the origins of the problem.
There's one thing that somewhat surprised me though: this line:
> "In 2018 Heroku was pretty much the only option for a newbie like me to get started with web-development"
Was it? Really? I mean, I'm not saying the author did anything wrong in choosing Heroku at the time (after all, who could have known back then what a dumpster fire Heroku would turn out to be), and the commercial success Heroku achieved before going down the gutter shows that it must have had some good reasons going for it, at least on paper before the users are confronted with problems that make them judge the situation differently…
… but I don't really get where that "pretty much the only option" vibe would come from. Maybe It's just me having completely different selection criteria, but from my perspective, there were lots of other options to "get started with web-development" and Heroku was just one among many. I don't see at all by what measure Heroku would have seemed like "pretty much the only option"?
Let's say you have never deployed anything to production before, and you've worked through a tutorial in Rails or Django or whatever and just built your first web app, and it's 2018, what are your options?
There's the zoo of AWS. Maybe there's something there you can use - Lightsail came out I think in 2016 - but good luck trying to find it out of all the plethora of weirdly named services. Again, total beginner here, and AWS can be daunting even to experienced developers.
You can go with Linode or Digital Ocean. You would need to set up a VM with all the dependencies and make it secure. Oh and you'll need a database - should that sit on another VM? What about backup and restore? What about deployment? Sure, you can use Ansible, but that's yet another learning curve.
Render launched in 2019. Fly.io came out 2020. As far as I remember, there wasn't a competitor that offered the sheer convenience for the hobbyist beginner on the level of Heroku.
> You can go with Linode or Digital Ocean. You would need to set up a VM with all the dependencies and make it secure. Oh and you'll need a database - should that sit on another VM? What about backup and restore? What about deployment? Sure, you can use Ansible, but that's yet another learning curve.
An interesting perspective. I started using Linux as a kid, long before I started programming. When I wrote my first webapps, setting up a VM and database was the easy, familiar part. (I didn't really care about securing it.) It makes sense that if someone's first delve into any technical field is writing webapps, setting up a VM and database would be daunting.
Ten years before that, I rented a cheap dedicated server and learned to use Webmin and Virtualmin. And it wasn't particularly complicated, Virtualmin gave you everything you needed with minimal configuration and you could find plenty of help online for the rest.
And it gave you a certain idea of how it worked, instead of operating on a black box.
> you've worked through a tutorial in Rails or Django or whatever
People underestimate the momentum of educational content. The Ruby on Rails tutorial book is a perfect example of guiding people into the Heroku walled garden - and at the time it was a reasonable decision that benefited the readers and (IMO) helped encourage them to go beyond starter-apps and actually put something in the wild.
I used a digital ocean ubuntu droplet with haproxy and certbot back when I first started off. Used their Postgres service for the database and only opened port 443 and 80 to public traffic. Droplet backups for backups if the vm needed and deployments were a manual git pull.
Sure a little complicated but there are plenty of good tutorials out there.
I would say Heroku for a new dev is not actually ideal. It hides way too much of the inner workings and makes it harder to learn about web development. I think it's more appropriate for a startup which just wants a ci/cd pipeline and some redundancy without investing that much time into it.
Why is "learn more about how to properly host something" never an option for people? And in 2018! Suck it up and learn how to secure a VM, folks, especially if you're turning tutorials into production services. Most of those issues don't just go away when someone builds yet another expensive abstraction on top of a server, I promise.
Assuming they wanted a webserver + database and wanted to learn web stuff, not server admin / unix stuff to configure a LAMP stack or whathaveyou + certbot etc. Deploying on your own domain of legitimately daunting without a lot of prerequisite knowledge. Heroku automated a lot of that and some people learned it as the only way to deploy without learning the manual process first, and that's fine IMO.
Hi. I’m the author. First off, happy to hear you find that refreshing - it’s a really nice compliment to hear!
I, like you, hate blanket statements. Perhaps I should I’ve emphasized a newbie like me in that sentence? I really knew next to nothing about how web development, and specifically serving your site from a server, works.
In case it's not clear from the article, Nixpacks build OCI (essentially, Docker) images, so they are perfectly vendor neutral as far as I know. The ending ambiguously implies that Nixpacks may be undesirable vs using Docker, but actually it's just another way to build an image. Fly.io supports Nixpacks out of the box too, I believe, which makes it even easier to use them with Fly (although, you can also just push an OCI image directly to the fly.io registry and deploy with that, which I have been experimenting with in spare time as an option for using Nix itself to build an OCI image for Fly. I'm sure there will be an even nicer way some day, but it works for now...)
I'm sure the author knew this, but I wanted to iterate it in case anyone misunderstood.
Everyone can relate to the sad demise of Heroku at this time. Sad, because they could've dominated this space which still has a lot of issues.
Yet-another-infrastructure-group nailed it in their graphic about "what your infrastructure says about you?"... "Heroku => "You are either negotiating the pricing or deplatforming" https://www.yaig.dev/
Not sure if you have done this already but: If you rotate your database, redis and email provider passwords/tokens, the zombie process might still be running but will not have any effects any more.
OP here: that’s a good idea that did come up to mind (specifically rotating the Redis queue credentials). I was just sure Heroku’s gonna take care of this shit by now.
BTW, I’m not 100% sure it’ll work: if Heroku updates that zombie dyno’s environment variables, it may still have access to the new credentials :/ (My Redis instance is also a Heroku add-on)
> BTW, I’m not 100% sure it’ll work: if Heroku updates that zombie dyno’s environment variables, it may still have access to the new credentials :/ (My Redis instance is also a Heroku add-on)
If the configuration only read once during startup, the celery process won't use the new configuration unless it's restarted, right?
Rotate a token, but also mangle it and change to the correct one in code. eg: change database url from `postgres://` to `invalid://` and replace it in code.
Probably related to https://status.heroku.com/incidents/2531 ("On April 6, 2023, between 21:20 UTC and 22:30 UTC, our Common Runtime customers were unable to provision dynos in the US and EU regions. This issue impacted starting/scaling dynos in existing apps, one-off dynos, builds, and release phases.")
I have my startup with them and pay them a hefty bill. I had my personal websites on a second account (that should have been a free plan - one deploy every three years, next to zero traffic), and they deleted them and continue to bill me.
I've had multiple customer service interactions asking them to stop billing me and they're nothing short of rude and unhelpful. "We've told you the dozens of steps to take to get us to stop billing you" kind of responses from their top CS head. (Paraphrasing that quote, though I'm sure "we told you" is verbatim).
I think I tripped their janky system up when I started scaling one of my personal projects into a startup. I converted my personal account into my business account and moved my personal websites into a new account. This totally botched their system. The thing that gets me is how unhelpful they've been in dealing with the matter. It's not like any of this is my fault.
As soon as I get bandwidth to take my startup elsewhere, I'm gone and I'm never looking back. It's amateur hour over at Netlify. They're downright unpleasant to deal with.
I'm warning everyone I know to avoid them.
Netlify has weird defaults for everything. It caches almost nothing by default. I had to create a Netlify headers file to tell them that actually yes I would like my CSS, JS, and fonts cached.
Absolutely absurd I had to do that. Even for font files. Because as we all know, the font files change so often that we should never cache them /s
All manner of dumb things like this. Really the only thing keeping me on Netlify is that it has for handling built in. That and fear of changing DNS settings (I use Google domains).
I was thinking about using their identity and access plug-in to build out member access only pages. Would Render have this capability? Or any other non-code recommendations?
edit: and no, they did not stop charging me for youtube TV. I actually had to get a new card number for my credit card for them to stop.
There's one thing that somewhat surprised me though: this line:
> "In 2018 Heroku was pretty much the only option for a newbie like me to get started with web-development"
Was it? Really? I mean, I'm not saying the author did anything wrong in choosing Heroku at the time (after all, who could have known back then what a dumpster fire Heroku would turn out to be), and the commercial success Heroku achieved before going down the gutter shows that it must have had some good reasons going for it, at least on paper before the users are confronted with problems that make them judge the situation differently…
… but I don't really get where that "pretty much the only option" vibe would come from. Maybe It's just me having completely different selection criteria, but from my perspective, there were lots of other options to "get started with web-development" and Heroku was just one among many. I don't see at all by what measure Heroku would have seemed like "pretty much the only option"?
There's the zoo of AWS. Maybe there's something there you can use - Lightsail came out I think in 2016 - but good luck trying to find it out of all the plethora of weirdly named services. Again, total beginner here, and AWS can be daunting even to experienced developers.
You can go with Linode or Digital Ocean. You would need to set up a VM with all the dependencies and make it secure. Oh and you'll need a database - should that sit on another VM? What about backup and restore? What about deployment? Sure, you can use Ansible, but that's yet another learning curve.
Render launched in 2019. Fly.io came out 2020. As far as I remember, there wasn't a competitor that offered the sheer convenience for the hobbyist beginner on the level of Heroku.
An interesting perspective. I started using Linux as a kid, long before I started programming. When I wrote my first webapps, setting up a VM and database was the easy, familiar part. (I didn't really care about securing it.) It makes sense that if someone's first delve into any technical field is writing webapps, setting up a VM and database would be daunting.
And it gave you a certain idea of how it worked, instead of operating on a black box.
People underestimate the momentum of educational content. The Ruby on Rails tutorial book is a perfect example of guiding people into the Heroku walled garden - and at the time it was a reasonable decision that benefited the readers and (IMO) helped encourage them to go beyond starter-apps and actually put something in the wild.
Sure a little complicated but there are plenty of good tutorials out there.
I would say Heroku for a new dev is not actually ideal. It hides way too much of the inner workings and makes it harder to learn about web development. I think it's more appropriate for a startup which just wants a ci/cd pipeline and some redundancy without investing that much time into it.
I, like you, hate blanket statements. Perhaps I should I’ve emphasized a newbie like me in that sentence? I really knew next to nothing about how web development, and specifically serving your site from a server, works.
I still have some smaller projects running on Heroku. Was running a mid-scale one that we shut down for unrelated business reasons. It's been fine.
I'm sure the author knew this, but I wanted to iterate it in case anyone misunderstood.
Yet-another-infrastructure-group nailed it in their graphic about "what your infrastructure says about you?"... "Heroku => "You are either negotiating the pricing or deplatforming" https://www.yaig.dev/
BTW, I’m not 100% sure it’ll work: if Heroku updates that zombie dyno’s environment variables, it may still have access to the new credentials :/ (My Redis instance is also a Heroku add-on)
If the configuration only read once during startup, the celery process won't use the new configuration unless it's restarted, right?
That horror when you delete code but it's still running, you're just so confused...
I've forgotten how I resolved it, but man it was a pain to diagnose.