Preferences

I have no idea why there's nothing here saying "don't". Go and get a Heroku account, hook it up to your Github repository's master branch for deploys, use Github Actions for CI, and then get on with life.

Yes, you'll pay more for a Heroku Postgres instance than you would for a VPS on Digital Ocean with Postgres running on it, likewise you'll pay more for Heroku Dynos than another VPS to run your application server. On the other side though, your backup, rollback, deploy, and scaling strategies can all be "Heroku does that", and you can focus on the much more valuable job of building a business.


Heroku is by far the best for this but just to throw in some alternatives:

  * Digital Ocean Apps -- somewhat finicky but works very similar to Heroku, it gets closer to bare metal so I prefer it
  * render.com
  * AWS Elastic Beanstalk -- though setting this up is non-trivial, it is very similar to Heroku with its "set it and forget it"
  * AWS Container Services -- if you're using Docker
  * Google App Engine
  * Supabase -- geared for SPAs but this may be the ticket depending on what you're building, is open source

You may want to use your own VPS but spend for a managed database solution as this has the most potential for catastrophe.
I would advise against Elastic Beanstalk, last time I used it the product had the stink of being on life support - they've not really added any new features to it in several years, and even before that it was incredibly flakey.
A concur. I got burned three times by Elastic Beanstalk in 2019 before switching away.

1. Their server manager process got in an unresponsive state. It wouldn't update my service. It stopped reporting logs from the service that was running. I went to the AWS Loft and consulted with the AWS Support technician. They had me log into the machine with SSH and troubleshoot. I was using Elastic Beanstalk specifically so I would not have to log into machines.

2. The console frequently showed servers as running when they weren't. And vice-versa. I wasted a lot of time trying to figure out why my server didn't start when it actually did start and why my server isn't listening on its port when the console incorrectly showed that it started. Logs were also delayed randomly.

3. The final straw happened on a Saturday. Elastic Beanstalk suddenly started returning errors. I purchased an AWS Support subscription and filed a ticket. It turns out Elastic Beanstalk Team had deployed on a Saturday and then rolled back. Unfortunately, anyone who did API calls through the new API version got new values added to their Elastic Beanstalk API backing database. The rolled-back the server errored when it saw the new values. They refused to just fix the bad data in their database caused by their bad deployment. Instead, they asked me (their customer) to download special management tools and perform manual operations to fix it. And I had to pay them to find out these instructions.

Now I use Heroku.

What additional features are you looking for? I've been using beanstalk for the past few years, and just wrapped up doing a large deployment on it. I've never found beanstalk to be a bottleneck or not have a feature I was looking for.
Recently Beanstalk got upgraded to their "Amazon Linux 2" making it basically pretty much a Heroku clone, you even set up Procfile and services ;-) It still requires a LOT of hacking and insider-knowledge to do some funkier things, but it's a great thing
I use Elastic Beanstalk daily it is maintained and supports everything on AWS, they've added ALB and WAP for example. It runs on Cloud Formation. Never experienced anything "flakey"
Also AWS Copilot if you like CLI based tooling, similar to Elastic Beanstalk but easier (at least if you're comfortable making a Dockerfile)
Was not aware of Copilot! Looks much better than Elastic Beanstalk
Have you ever tried CapRover? https://caprover.com/

Would be curious how it compares to some of these.

Add TinyStacks to this list. They are just getting going, but I got a demo recently - sort of a cross between Vercel and Heroku, but on AWS.
Fly.io is a pretty nice alternative too.
ERR_SSL_PROTOCOL_ERROR when trying to connect
Works now for me (https://fly.io)

Looks interesting

Does SPA stand for Single Page Application?
I think so. You'd use it as the backend for your SPA:

> Create a backend

But you'd probably host your SPA elsewhere, eg Vercel, Netlify, GitHub pages

I really like Heroku, when I work on NodeJS projects.

BUT: In the last year I've had some rather serious downtime issues that were 100% Heroku's fault. (Poor encapsulation of Postgres configuration via the connection string, and they mistakenly claimed that I violated their TOS when I didn't. They apologized and fixed the situation.)

I'd really like to see some good alternatives to Heroku. Not just because of their screwups, but because the languages that I want to work on have limited support in Heroku.

which languages do you want to work on?
C# and Rust.

Edit: Yes, I know there are community supported ways to do this, But I want something that is as slick as the NodeJS ecosystem on Heroku.

This! Plus it includes SSL provisioning, staging environments, background workers etc.

Other competitors like render.com are starting to look like they'll be competitive on features and are way cheaper too.

Yep! Used Heroku at a previous gig (now a mid-size startup), worked great, now on Render.com and it's also great. Also factor in fly.io and railway as quickly-growing platforms in the same PaaS sort of space.
I head up Dev Advocacy at Render (previously at Heroku). Happy to answer any questions about Render.
I'm really only waiting on PITR for postgres before moving all my workloads over to render. Do you know when that will be available?
(Render CEO) We're targeting early next year, but it might be sooner if we can hire faster!
Heroku Postgres – after all those years – still is vulnerable to MITM attacks. You can't reliably verify the authenticity of the connection between Heroku's Dyno and the Postgres database.

They use self-signed certificates on Heroku Postgres servers without a certificate authority present in the chain. No chance to establish reliable peer verification. A shame, I would love to use Heroku more often without compromising security.

Are you actually doing this for a production app with income you rely on? Because Heroku has horrendous uptime these days. Lot's of random emergencies on both worker and web dynos. Don't forget you share routing with thousands of other apps too so expect random hiccups there too. It's easy to give this advice but does not scale well with complexity.
Exactly. And when you are truly "beyond POC level and beyond heroku (for whatever reason)" then of course it is time to hire people.

I see this all the time. Entrepreneurs trying to solve the people problem by avoidance. The problem with the super efficient player is twofold. First, it's not really scaleable. Second, what if the person gets sick or is in vacation?

This is what I've been doing for years, but Heroku Postgres is so bloody expensive, it just doesn't make sense for apps that don't make much money. So I just moved my data to an RDS instance, shared between multiple apps. Cost savings are great, headache savings much less so. I would say if you are going to move off Heroku, do it with the apps/projects where you can f-up, or have downtime without much repercussion. AWS stuff is a deep dark forest, undocumented and confusing. I'd say for anything that is critical, just keep paying Heroku. It isn't worth it.
I'd even go higher up the value chain with something like Vercel or Netlify if your stack fits in their offering. Heroku is a definitely a good option if you need more flexibility. The costs won't be a bottleneck until you actually have enough scale that you can afford DevOps staff.
Vercel has the best dev UX in my opinion, everything just "works" the way you expected it the first time, and if not their documentation is very straight forward.
Until Heroku has a huge downtime (like recently) and you are f*ked. If you have your own VMs, you can quickly move them to a different provider, but it's hard to start figuring out servers when Heroku is down and your business stopped.

That said, I would also recommend Heroku to many.

I can almost guarantee that over a period of years you'll see significantly less downtime that can be attributed to Heroku than you would on VMs that you manage. Even if that isn't the case, if Heroku are responsible for it then you can mostly just kick back and let them fix it, rather than spending 24 hours without sleep migrating VMs between providers.

The context here is also that of a single entrepreneur building a business. At that point in the lifecycle of a product downtime really isn't that big of a deal, customers tend to be pretty understanding so long as you recover.

Anyone who kicks back while their web hosting is down... is a psychopath. That's just not going to happen. Are you accountable to literally nobody? Even as a solopreneur, there are customers/visitors. If my site is down, I am losing money/credibility/visitors/etc. Sure, you will probably get past it, but it means preparing to communicate to those people during/after. It also means understanding what went wrong and what could be done to prevent it. Just kick back and not worry about it sounds like you're doing nothing of consequence to anyone.
Totally agree. There's some impostor syndrome in play here. If you don't need the scale, why waste your time managing a more complex setup? Heroku might be slightly more expensive in the short term but your time is better spent building/selling than future-proofing or just doing it because larger operations have to.
+1. For pre-A series/pre-revenue/pre-1k paying customers and other early stage businesses you can do a lot worse than starting out on Heroku, especially if you don't have sysadmin/cloud/devops expertise (and even if you do, that time could/should be spent on much more important things at this stage).

This item has no comments currently.

Keyboard Shortcuts

Story Lists

j
Next story
k
Previous story
Shift+j
Last story
Shift+k
First story
o Enter
Go to story URL
c
Go to comments
u
Go to author

Navigation

Shift+t
Go to top stories
Shift+n
Go to new stories
Shift+b
Go to best stories
Shift+a
Go to Ask HN
Shift+s
Go to Show HN

Miscellaneous

?
Show this modal