top | item 33386305

Life after Heroku: What's a dev to do?

128 points| s4i | 3 years ago |reaktor.com

103 comments

order

larrymyers|3 years ago

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.

https://www.larrymyers.com/posts/nomad-and-traefik/

franciscop|3 years ago

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.

KronisLV|3 years ago

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.

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

the real story here is that a coffee and a bagel costs $10 \s

nullzzz|3 years ago

Post author here. I agree!

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

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.

x86hacker1010|3 years ago

Can you speak to Nomad vs K8s for side projects?

I’ve deployed K8s in the past but was curious if Nomad is lighter/easier

nurettin|3 years ago

Your post made me realize that I pay more to digitalocean for a 2gb ram instance. I guess roles got reversed.

ysavir|3 years ago

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.

charrondev|3 years ago

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.

t_sawyer|3 years ago

It’s not the charging that made me leave.

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

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.

erokar|3 years ago

They mention their personal projects in the article.

nullzzz|3 years ago

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.

pjmlp|3 years ago

I can say that back in the glory days of Nokia Mobiles they certainly got lots of money, you can find this out easily by checking the company history.

They can certainly play for Heroku.

gbourne|3 years ago

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.

andrelaszlo|3 years ago

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.

Maybe we were just unlucky, but good riddance...

paxys|3 years ago

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.

michaelbuckbee|3 years ago

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:

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

> the article doesn't state Heroku by name

Heroku is mentioned in the first sentence.

t_sawyer|3 years ago

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.

siquick|3 years ago

Also a Hetzner convert. Their pricing is so cheap for VPS compared to AWS that I worry they’ll have to put up the prices at some point.

paxys|3 years ago

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."

tyingq|3 years ago

You can get pretty far for free on Cloudflare, and the next tier up is $5/mo. Though it does mean either JS or WASM, which doesn't work for everyone.

danjac|3 years ago

Hetzner (or Digital Ocean) + Dokku is cheap & easy to run for small side projects.

clintonb|3 years ago

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.

chasd00|3 years ago

Linode + dokku + the letsencrypt plug-in is my goto

Mikeb85|3 years ago

$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...

santoshalper|3 years ago

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.

Cheezmeister|3 years ago

Depends on the pub ;) But this is very true.

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

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.

1. https://news.ycombinator.com/item?id=32594533

nathants|3 years ago

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.

MuffinFlavored|3 years ago

Pay?

paxys|3 years ago

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.

stepbeek|3 years ago

There are plenty of reasons to dunk on Heroku from the last year. I’m not sure why asking customers to pay for hosting us one of them.

cudgy|3 years ago

“… we have more than 25 applications running on free Heroku”

No wonder Heroku is getting rid of the free tier with freeloaders like these guys.

alphabettsy|3 years ago

Digital Ocean’s App Platform seems similar.

GCP offers Cloud Run which would probably free for most to run containers.

rhodysurf|3 years ago

Cloud run is really great and cheaaaapppp

mscarborough|3 years ago

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?

lis|3 years ago

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].

[0] https://www.mindwendel.com

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

mhoad|3 years ago

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.

devin|3 years ago

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.

TheFreim|3 years ago

> "Neon is a fully managed serverless PostgreSQL with a generous free tier."

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'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.

bdcravens|3 years ago

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.

greatgib|3 years ago

For less than heroku monthly price, you can have your own server in a cloud provider and spawn as much simple apps as you want!

strzibny|3 years ago

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.

rcarmo|3 years ago

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.

dERtuTOR|3 years ago

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!

nzoschke|3 years ago

Disclosure: former heroku employee.

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

Use Hatchbox. With Linode. I love it.

https://hatchbox.io/

paxys|3 years ago

If your problem with Heroku is the price why would you use something that is even more expensive?

rpastuszak|3 years ago

I have a Heroku Postgres DB I’d like to migrate to Planetscale (MySQL). Has anyone here attempted that?

coupdejarnac|3 years ago

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.

nullzzz|3 years ago

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.

bcrosby95|3 years ago

They weren't asking for it.