The article calls out having to learn how to create a Docker image for Fly.io as though it's a bad thing. I consider it a huge bonus if you like taking advantage of free tiers for services.
The whole point is that if you're going to take advantage of a free tier you should do so in a way that switching is trivial. Docker goes a long way to achieving that.
I personally just pay $10/month to Linode and self host these days using Nomad. Less restrictions and more freedom for the cost of a coffee and a bagel.
As someone who uses Node.js and is in the exact same situation as the author, requiring Docker is the #1 reason I'm not going with Fly.io. There's a standard for launching a Node.js project, and that's running the "start" script `npm start`, so switching is trivial. I switched from a Linux machine to my current MacBook and I didn't have to make a single change in any of my Node.js projects.
Adding docker means adding a whole new layer to ALL of my projects, which I'd prefer to avoid specially when there's no need as Heroku has very clearly shown.
I use Time4VPS (which is linked on my blog) or Hetzner for VPSes and Docker Swarm for orchestration (at least for personal stuff, though Nomad or something like K3s can be great too), in combination with a more boring web server like Apache or Nginx for ingress (but Caddy and Traefik are viable as well).
Overall, I'm inclined to agree! You can pick a stack that's as boring or interesting as you want and have your container images work in almost any environment where OCI is supported, with minimal tweaking.
Currently each of my individual nodes cost around 5-10 euros a month, or I can even use my homelab servers for whatever I want, since they can either be in the same cluster or a separate cluster. Essentially you just adjust some deployment constraints and feed some YAML/HCL into whatever container orchestrator you have. Provided that your registry access is configured correctly, you'll have your software up and running in minutes.
Did not mean to imply that Dockerizing applications is a bad thing - actually even pointed out that "it's not so hard". Just wanted to point out that writing one takes some effort and therefore Fly.io is not a drop-in replacement for Heroku.
Container based deployment is a great thing to have and definitely a skill worth learning.
Fly.io seems like the easiest way to get a docker container running publically. I had a look at the AWS equivalent (can't remember the name), and it was a cluster fuck of complementary services in the tutorial.
Wish more cloud providers would focus on helping with existing open source tech, rather than trying to suck you in.
My biggest take away from trying to find a Heroku alternative is that Heroku is late to the game of charging for a basic app. Other service might be free, but seem to have some sort of catch--only static, or requires a certain infrastructure, or whatever else--and only Heroku had the unopinionated free tier. And while I haven't used their competitors, I'm skeptical they can match Heroku's interface, CLI, add-on ecosystem, documentation, and all the various tutorial and stack overflow questions about their platform.
So, I'm sticking with Heroku. Sure, it'll cost some (and supposedly they're bringing in cheaper tiers than current, too), but it's not a big difference from their competitors, is reasonably priced (from a competitive perspective), and allows me to continue using a tool I know inside along with all the accompanying ecosystem.
I guess after ten years I'll actually have to pay Heroku something for their service. That seems... fine to me. Complaining about that seems petty.
I’ve found Vercel to work well for my personal projects. It’s supports dynamic applications and static ones, custom domains, CI for deployment and has a useable CLI all available on its free tier.
It was the security breach where all of my environment variables were stolen. And the amount of time it took and their level of transparency through it all.
This looks like a serious agency, so I'm stuck on the question of why the free tier is so important to them versus simply paying for Heroku. Surely doing a mass migration to a new PaaS just to claim a small per-project savings is a dubious proposition given the inevitably of a future rug-pull from wherever you migrate.
On the other hand, if you're an individual with a bunch of small projects and you want to host them economically, then standard VPS hosting is going to give you a lot more bang for your buck.
Post author here. We are of course using paid dynos for any business applications. Free tier only makes sense for hobby projects and quick experiments. There's no free lunch in the long run.
All the free alternatives will eventually get rid of their free tier too - could be 1 year, could be 10 years. As the author stated, they had 25 free instances running. They converted over to paid, so maybe they became a profitable client. However, all the users who have 25+ instances and never pay over the course of 10 year isn't sustainable for a business.
We just shut down our last Heroku dyno. Kudos to all the people who worked there, there were a lot of talented ones but lately the service has been a joke.
As a Heroku user, you pay a premium for AWS instances, essentially, with the premise being that things "just work" and that you get simple deploys.
Well, if by "just", you mean "barely" - sure! We had several hours of outages where Heroku's status page was still green. We even gave them metrics to show that the issue was with their routing layer, and they just told us that it was our apps fault and that perhaps we should get New Relic to see why it's so slow... After several months of prodding they acknowledged that it was their fault. Or, well, they blamed another customer for excessive use of resources or something like that.
As for simpler deploys. We had multiple incidents where our deploys got into some hybrid preboot state. (If you're not familiar with Heroku's terminology, a bit simplified: Preboot enabled = start the new instances, wait three minutes and then reroute traffic. Preboot disabled = stop the old instances, then start the new ones.) In our case, deploying with preboot enabled, Heroku stopped our old instances and then waited three minutes to start new ones... Again, this wasn't acknowledged by support until after several weeks, even those we provided logs showing exactly what happened with our instances. Now they have admitted that it's a bug, but our issue is still open.
Oh, and the Github integration was of course removed when they were hacked, so the DX argument isn't very strong either.
Heroku still has a free tier which is comparable to Render, Fly.io and all the other alternatives people keep bringing up. The mythical "an unlimited number of sites & DBs hosted for free forever" option everyone is looking for simply doesn't exist.
No discussion of Heroku and the free tier should happen without the context of the massive cryptomining scheme that was directly targeting their free tier:
I’m personally very happy with switching to a Hetzner dedicated server, I’m saving a ton of money, and the server can handle my busiest months of load with plenty of room to spare.
I use docker containers for a rails app and send backups of my db to S3 with restic. Docker compose files and DR scripts are in my repo. If Hetzner goes down I’ll run them on a VPS from any of the million providers.
Deploys push a docker container to dockerhub, then ssh into Hetzner and pulls them.
If you want the ease of git push deploys similar to Heroku then use Dokku.
Everyone should remember how long it took Heroku to tell you your environment variables were stolen in a breach and how they were not transparent at all through the whole process.
Every conversation on this topic can be summed up as: "Heroku charging $7/mo for hosting is evil. Switch to <competing service that costs $10-$20/mo> instead."
This assumes the cost of server maintenance is $0. I just shutdown my last droplet. I want a PaaS so I never have to deal with server maintenance again.
$7 is less than a single beer in the pub. If you can afford to devote thousands of hours to learn programming and then hundreds to thousands of hours to build an app then you can afford the hosting cost...
True, I noticed that too. I mean, how low do you value your time to not pay $7/mo for your a project you are spending significant time on?
On the other hand... there is a ton of intangible value in the form of knowledge to be gained from switching tech stacks and hosting platforms. So another way to look at it is, this is a chance to re-evaluate and potentially upgrade your tech stack or skils.
Actually, there's a whole set of mental heuristics that are evolving in my head surrounding monthly-recurring-discretionary-fixed-costs, as compared with the cost of a $BEVERAGE at the $VENUE. It runs the gamut from a $5/mo DO droplet, which costs a Bier vom Fass in your average pub in Germany and grants me a public-facing static IP, to a $20/mo donation to Wikipedia, which costs a Singapore Sling at the Raffles Hotel and grants me a clear conscience when I dismiss its increasingly concerning[0] petitions to donate.
All that said, in addition to the booze quotient, one also has to compare the more nebulous cost of _providing payment credentials at all_ to a new party which didn't have them before; i.e., enlarging your digital footprint[1]. This often must include a mailing address and/or a phone number. In the event of a breach, the consequences to the payor range from a mere uptick in spam/robocalls/junk mail to identity theft and all that entails. We can agree the dollar here is a huge wildcard, just like the odds of it happening at all. It varies by individual, is usually unquantified, my point is the cost/benefit gets real muddy, real fast.
Much more fruitful discussions had a couple of months ago when this decision was first announced 1. People making the decision to move are basing that on slightly more than just not wanting to pay the cost of a beer each month. Furthermore, free tiers are loss leaders, and removing them predictably has consequences.
you don’t want a free tier. what you want is reasonable usage based pricing and scale to zero.
all the actual tiny projects on free tiers have actual costs approaching zero. everything else shouldn’t be on a free tier.
if it’s not possible to monitor usage (not billing) and automatically unplug dns if usage spikes above some threshold, it’s probably not a good provider. having confidence that some project will never cost above x/month is a reasonable ask, and not challenging.
hint: use aws. like python and linux, it's not very good, but everything else is worse.
It's bizarre that people's form of protest against Heroku is to threaten to move to a competitor that has even worse pricing tiers. You've had a free ride for a decade, being asked to cough up $7/mo now isn't the end of the world.
Interested to hear what the paying business customers who migrated away from Heroku think about their new home and the process to move to Fly/Render/Digital Ocean/whatever?
I've migrated one larger project with several containers / databases to AWS Fargate / RDS and a smaller one to Scalingo [0]. In both cases, I'm happy with how it turned out and the migration went fine.
One of the main drivers behind the decision was that Heroku required us to move to the Enterprise tier to run private databases.
If the architecture of your application is not too complex, I would suggest trying Scalingo (or Fly.io, Render, etc.) first. It took me around a day to get the application running on Scalingo, Fly.io and Render. This allowed us to be able to compare them a bit. In the end, we went with Scalingo, since the Review Apps feature to automatically launch environments from pull request worked well for our workflow.
You can see the configuration for Scalingo for a smaller elixir app on Github [1].
GCP Cloud Run and Cloud Native Buildpacks will get you back the Heroku workflow and includes a bunch of other advantages on top of it. It also includes a free tier as well.
https://neon.tech/ wasn't mentioned in the article, but I'm looking forward to trying it out. At the moment it's unclear if they'll have something suitable for hobbyists.
I've been using Google Cloud Run for one of my hobby projects and it worked like a charm. You can have a Google Cloud Build job that takes your GitHub repo from which it builds a Docker image. You make sure that the CMD in the container starts your server. When a request comes in the container is started within ms. You only pay for the storage for the image & the cost from actually executing the container. If you get no requests, it's practically free which is important for my side projects, since there is hardly any traffic.
I tried to get a similar solution with AWS Lambda and API Gateway and it was a huge PITA in comparison.
Anyone know any developers willing to work for free? I have a business idea, and it'll probably make me decent money, but I'd rather not have to pay for the resources needed to fulfill my vision.
There are cheap virtual machines that are good enough for most.
In my book Deployment from Scratch I make a case that just a little bit of Bash gets you pretty far.
There is also nothing wrong with Dokku (we used it at one startup) or Capistrano (I didn't really use it but I think it's fine!) and other simple tools for simple deployments.
Time to remind folk that if you don't need containers (well, it works with containers too, but it's not the point), you can set up https://github.com/piku on a VPS as well.
I appreciate the great article. Heroku has been my go-to platform for personal projects. I'll research these Heroku alternatives. You've given me a terrific place to start and saved me countless hours. Best wishes for your relocation!
I believe there is a new tier coming that that is a small price for dyno hours spread across all your apps. So if your apps sleep it could still be cheap.
Personally I just doubled down on heroku!
I cleaned up a lot of free apps. ‘git pull’ to grab the source is just as magical as git push.
I scaled the important ones up.
I simply don’t have time to learn another platform and its trade offs, or to repackage my apps. I definitely don’t have time for anything other than Postgres which isn’t standard or cheap on other platforms either.
Nothing else is free anyway and who knows how long other platforms will be around. The whole Docker fad has practically come and gone meanwhile build packs keep doing their thing.
In doing so I hit a problem redeploying and the docs and support response are as good as ever.
Thanks for everything up till now Heroku, I’m still a customer for life!
I have zero sympathy for these guys, nor for anyone else running their business on free tier infrastructure. This is the kind of customer nobody needs.
Post author here. The article is about alternatives for running your hobby projects. I agree that it doesn't make sense to run, or expect to be able to run, your business applications on free tier. We will keep on using Heroku's great services from now on as well.
larrymyers|3 years ago
The whole point is that if you're going to take advantage of a free tier you should do so in a way that switching is trivial. Docker goes a long way to achieving that.
I personally just pay $10/month to Linode and self host these days using Nomad. Less restrictions and more freedom for the cost of a coffee and a bagel.
https://www.larrymyers.com/posts/nomad-and-traefik/
franciscop|3 years ago
Adding docker means adding a whole new layer to ALL of my projects, which I'd prefer to avoid specially when there's no need as Heroku has very clearly shown.
KronisLV|3 years ago
Overall, I'm inclined to agree! You can pick a stack that's as boring or interesting as you want and have your container images work in almost any environment where OCI is supported, with minimal tweaking.
You can use either base images that someone else has made (Bitnami images in particular are rather nice), or build your own, about which I wrote in more detail: https://blog.kronis.dev/articles/using-ubuntu-as-the-base-fo...
Currently each of my individual nodes cost around 5-10 euros a month, or I can even use my homelab servers for whatever I want, since they can either be in the same cluster or a separate cluster. Essentially you just adjust some deployment constraints and feed some YAML/HCL into whatever container orchestrator you have. Provided that your registry access is configured correctly, you'll have your software up and running in minutes.
poopypoopington|3 years ago
nullzzz|3 years ago
Did not mean to imply that Dockerizing applications is a bad thing - actually even pointed out that "it's not so hard". Just wanted to point out that writing one takes some effort and therefore Fly.io is not a drop-in replacement for Heroku.
Container based deployment is a great thing to have and definitely a skill worth learning.
LAC-Tech|3 years ago
Wish more cloud providers would focus on helping with existing open source tech, rather than trying to suck you in.
x86hacker1010|3 years ago
I’ve deployed K8s in the past but was curious if Nomad is lighter/easier
nurettin|3 years ago
ysavir|3 years ago
So, I'm sticking with Heroku. Sure, it'll cost some (and supposedly they're bringing in cheaper tiers than current, too), but it's not a big difference from their competitors, is reasonably priced (from a competitive perspective), and allows me to continue using a tool I know inside along with all the accompanying ecosystem.
I guess after ten years I'll actually have to pay Heroku something for their service. That seems... fine to me. Complaining about that seems petty.
charrondev|3 years ago
t_sawyer|3 years ago
It was the security breach where all of my environment variables were stolen. And the amount of time it took and their level of transparency through it all.
dasil003|3 years ago
On the other hand, if you're an individual with a bunch of small projects and you want to host them economically, then standard VPS hosting is going to give you a lot more bang for your buck.
erokar|3 years ago
nullzzz|3 years ago
pjmlp|3 years ago
They can certainly play for Heroku.
gbourne|3 years ago
andrelaszlo|3 years ago
As a Heroku user, you pay a premium for AWS instances, essentially, with the premise being that things "just work" and that you get simple deploys.
Well, if by "just", you mean "barely" - sure! We had several hours of outages where Heroku's status page was still green. We even gave them metrics to show that the issue was with their routing layer, and they just told us that it was our apps fault and that perhaps we should get New Relic to see why it's so slow... After several months of prodding they acknowledged that it was their fault. Or, well, they blamed another customer for excessive use of resources or something like that.
As for simpler deploys. We had multiple incidents where our deploys got into some hybrid preboot state. (If you're not familiar with Heroku's terminology, a bit simplified: Preboot enabled = start the new instances, wait three minutes and then reroute traffic. Preboot disabled = stop the old instances, then start the new ones.) In our case, deploying with preboot enabled, Heroku stopped our old instances and then waited three minutes to start new ones... Again, this wasn't acknowledged by support until after several weeks, even those we provided logs showing exactly what happened with our instances. Now they have admitted that it's a bug, but our issue is still open.
Oh, and the Github integration was of course removed when they were hacked, so the DX argument isn't very strong either.
Maybe we were just unlucky, but good riddance...
paxys|3 years ago
fragmede|3 years ago
https://aws.amazon.com/about-aws/whats-new/2010/10/21/announ...
michaelbuckbee|3 years ago
https://www.bleepingcomputer.com/news/security/massive-crypt...
Note, oddly the article doesn't state Heroku by name, but the network diagrams all do.
stoeckley|3 years ago
Heroku is mentioned in the first sentence.
t_sawyer|3 years ago
I use docker containers for a rails app and send backups of my db to S3 with restic. Docker compose files and DR scripts are in my repo. If Hetzner goes down I’ll run them on a VPS from any of the million providers.
Deploys push a docker container to dockerhub, then ssh into Hetzner and pulls them.
If you want the ease of git push deploys similar to Heroku then use Dokku.
Everyone should remember how long it took Heroku to tell you your environment variables were stolen in a breach and how they were not transparent at all through the whole process.
siquick|3 years ago
paxys|3 years ago
tyingq|3 years ago
danjac|3 years ago
clintonb|3 years ago
chasd00|3 years ago
Mikeb85|3 years ago
santoshalper|3 years ago
On the other hand... there is a ton of intangible value in the form of knowledge to be gained from switching tech stacks and hosting platforms. So another way to look at it is, this is a chance to re-evaluate and potentially upgrade your tech stack or skils.
Cheezmeister|3 years ago
Actually, there's a whole set of mental heuristics that are evolving in my head surrounding monthly-recurring-discretionary-fixed-costs, as compared with the cost of a $BEVERAGE at the $VENUE. It runs the gamut from a $5/mo DO droplet, which costs a Bier vom Fass in your average pub in Germany and grants me a public-facing static IP, to a $20/mo donation to Wikipedia, which costs a Singapore Sling at the Raffles Hotel and grants me a clear conscience when I dismiss its increasingly concerning[0] petitions to donate.
All that said, in addition to the booze quotient, one also has to compare the more nebulous cost of _providing payment credentials at all_ to a new party which didn't have them before; i.e., enlarging your digital footprint[1]. This often must include a mailing address and/or a phone number. In the event of a breach, the consequences to the payor range from a mere uptick in spam/robocalls/junk mail to identity theft and all that entails. We can agree the dollar here is a huge wildcard, just like the odds of it happening at all. It varies by individual, is usually unquantified, my point is the cost/benefit gets real muddy, real fast.
Your mileage will vary.
[0]: https://cyounkins.medium.com/jimmy-wales-final-email-de36f39... [1]: https://en.wikipedia.org/wiki/Digital_footprint
DangitBobby|3 years ago
1. https://news.ycombinator.com/item?id=32594533
nathants|3 years ago
all the actual tiny projects on free tiers have actual costs approaching zero. everything else shouldn’t be on a free tier.
if it’s not possible to monitor usage (not billing) and automatically unplug dns if usage spikes above some threshold, it’s probably not a good provider. having confidence that some project will never cost above x/month is a reasonable ask, and not challenging.
hint: use aws. like python and linux, it's not very good, but everything else is worse.
MuffinFlavored|3 years ago
paxys|3 years ago
stepbeek|3 years ago
cudgy|3 years ago
No wonder Heroku is getting rid of the free tier with freeloaders like these guys.
alphabettsy|3 years ago
GCP offers Cloud Run which would probably free for most to run containers.
rhodysurf|3 years ago
mscarborough|3 years ago
lis|3 years ago
One of the main drivers behind the decision was that Heroku required us to move to the Enterprise tier to run private databases.
If the architecture of your application is not too complex, I would suggest trying Scalingo (or Fly.io, Render, etc.) first. It took me around a day to get the application running on Scalingo, Fly.io and Render. This allowed us to be able to compare them a bit. In the end, we went with Scalingo, since the Review Apps feature to automatically launch environments from pull request worked well for our workflow.
You can see the configuration for Scalingo for a smaller elixir app on Github [1].
[0] https://www.mindwendel.com
[1] https://github.com/mindwendel/mindwendel
mhoad|3 years ago
metadat|3 years ago
Heroku Free Alternatives
https://github.com/Engagespot/heroku-free-alternatives
https://news.ycombinator.com/item?id=33300053
(271 points, 134 comments)
devin|3 years ago
TheFreim|3 years ago
https://neon.tech/docs/cloud/about/
Seems neon is just a hosted database, not a heroku alternative? Will be interested to see what they offer when it's released.
ajmurmann|3 years ago
I tried to get a similar solution with AWS Lambda and API Gateway and it was a huge PITA in comparison.
bdcravens|3 years ago
the__alchemist|3 years ago
greatgib|3 years ago
strzibny|3 years ago
In my book Deployment from Scratch I make a case that just a little bit of Bash gets you pretty far.
There is also nothing wrong with Dokku (we used it at one startup) or Capistrano (I didn't really use it but I think it's fine!) and other simple tools for simple deployments.
rcarmo|3 years ago
dERtuTOR|3 years ago
nzoschke|3 years ago
I believe there is a new tier coming that that is a small price for dyno hours spread across all your apps. So if your apps sleep it could still be cheap.
Personally I just doubled down on heroku!
I cleaned up a lot of free apps. ‘git pull’ to grab the source is just as magical as git push.
I scaled the important ones up.
I simply don’t have time to learn another platform and its trade offs, or to repackage my apps. I definitely don’t have time for anything other than Postgres which isn’t standard or cheap on other platforms either.
Nothing else is free anyway and who knows how long other platforms will be around. The whole Docker fad has practically come and gone meanwhile build packs keep doing their thing.
In doing so I hit a problem redeploying and the docs and support response are as good as ever.
Thanks for everything up till now Heroku, I’m still a customer for life!
aantix|3 years ago
https://hatchbox.io/
paxys|3 years ago
rpastuszak|3 years ago
unknown|3 years ago
[deleted]
coupdejarnac|3 years ago
nullzzz|3 years ago
bcrosby95|3 years ago
unknown|3 years ago
[deleted]