Hacker News new | ask | show | jobs
by mvanga 2033 days ago
Honestly, having gone down this path a year back, just use Heroku for your backend. Maybe Netlify if you want to separate your frontend and backend.

The amount of complexity and interdependencies these "here's my stack" posts describe are always a huge cognitive overhead for running a one-person SaaS.

Heroku costs more, but there's a reason for it. If you're even remotely making money from your product, and are alone in running the show, it's a no brainer to drop a couple hundred dollars a month to eliminate 99% of your ops headaches: the documentation, the add-on's, the fantastic UI, decent reliability, and ease of operations are totally worth it. Literally the worst thing one can say about Heroku is the cost, and possibly, the inability to build certain complex architectures (which most single-person SaaS services aren't).

11 comments

I recommend just writing a Docker container instead. That's the ultimately portability and you can run in much more efficient environments (Cloud Run, Fargate, DigitalOcean Apps, Fly.io) and still scale up to large Kubernetes-based clusters if/when you need it.

Docker containers avoid the lock-in of a particular platform or CLI, and they can also be used as cheap CI/CD with multi-stage builds within the container.

Docker means you're maintaining an operating system, watching out for security vulnerabilities, patching software. It's still work, and if you screw it up, you're hosed.

If you're on Heroku or Google App Engine, you deploy your application code. That's it.

Docker containers (on Linux) don't have a guest OS. They all share the same kernel and only the userland is different depending on which distro you choose for your base.

You can choose to build on a scratch/blank image just as easily, which means nothing except your app itself is in the image.

You still have to update the packages or distro your image is based on. It’s not as maintenance free as heroku or google app engine.
Sure, but you can get the latest image automatically as part of your container build. It's not as hard as it seems.

Or you can build an image from scratch without any distro and then there's nothing to maintain.

You can deploy Docker containers to Heroku. I've done this (just requires a simple heroku.yml file and heroku stack:set container). If the project grows to the size where Heroku's costs become prohibitive, I can easily switch over to Digital Ocean with some tweaks to the docker config.
Why not just save the money and start elsewhere?
Most of my side projects never go beyond needing heroku free tier, and if they gain some traction the basic tier is usually sufficient.
And also Heroku. I'm not disagreeing, just saying Heroku becomes 'just another platform', and if it still looks expensive, you can go elsewhere, if it's cheaper/better in some way (I have no idea nor horses) then go with it.
+1 for Heroku for sure.

My SaaS has grown from $50/month costs to over $2k/month costs on Heroku over the last few years and I'm always eyeing AWS and others as a cheaper alternative, but honestly the ease of mind Heroku gives me is more than enough to cover the costs. I've had a few "hugs of death" over the years when posts went viral and scaling up both in quality and number of servers was literally just a few mouse clicks and then I was back online. Other times, when e.g. Postgres fell over from heavy use, their support brought it back online for me free of charge (and quickly), and offered a list of helpful suggestions that I could do to keep it from happening again.

I see paying extra for Heroku like paying extra for a devops guy. If you're comfortable enough in AWS to handle things in the heat of downtime, it's probably worth moving because it's significantly cheaper. If you aren't, then Heroku might be a pretty invaluable resource even when growing into the upper echelons of cost.

Heroku is a great product if you want development speed right from the start. I have used them in the past, and it was a very nice experience overall.

For many projects this is more than enough. However, in my case I would be paying 2-3x more if I was using Heroku.

With Kubernetes, in case I wanted to deploy new projects or even spin up a "testing" env, I can use the same stack/cluster, and not have my costs increase.

I do realize that this is not for everyone. But for me it just made sense, and enabled me to work on new features faster than before.

I just wonder how much you're spending per month. Going from $200 to $600 in exchange for not having so many moving parts would be 1000% worth it to me. Usually the margin on SaaS businesses is in the 60% range, most of which isn't infrastructure, so it's a rounding error until you get to the size where you have full time people working on infra.
In my case it's more that learning Heroku would take me longer than using what I already know well, Kubernetes on AWS.

So it wouldn't make sense for me to use Heroku (a tool I don't have much experience with), and pay more.

In terms of use of my time, to be honest I currently spend way more time sending emails, updating docs, and on "marketing" than on devops :)

Taking my first GKE project (done essentially as two man team in the side, and then maintained at quite low level of work most the time)...

The vendor whom we replaced = somewhere above $5000/mo (just infra)

Our final, most costly, GCP spend, including support contract = about $2000/mo (this involves a bunch of inefficiencies caused by developers unable to live with container - or dynos)

Expected Heroku cost, based on their online calculator= starts at $3000/mo, probably more

Expected lower time needed developing on Heroku = negligible

Heroku is a god send for getting off the ground, however the biggest issue for us hasn’t been cost (it’s high, but worth every cent) it’s been server location.

We’re an Aussie company, and a large percentage of our customers are in Australia. Having servers only in the US and Europe mean that Australian customers speeds are slower than they should be, and private spaces are far too expensive to warrant it.

I have started using google cloud run as a drop in replacement for Heroku.

It has almost all the same features and runs at almost any GCP location.

What about databases? One of the appeals of heroku is that you get databases as a service and don’t have to worry about backups, snapshots, etc.
You can use Aiven.io for the database as a service piece.
I support this sentiment so much. I've been building something in my spare time. You are one person, the value provided with Heroku and the time saved is worth the cost versus AWS, at least for a project of this size and scope. It would take a lot more customers and capacity on the server to justify the ROI.
I've been spending some time looking at moving to heroku, but having trouble figuring out how to use it for a real production for deploy for "only" a couple hundred dollars a month.

Is that what you're doing? "Standard" dynos and just a few of them are working for you, I assume, for that budget? In my tests, with a Rails app, "standard" dynos are looking surprisingly slow, possibly unacceptably so. Very curious to hear about other people's heroku formations if anyone wants to share. What platform you're on (Rails or something else), and what your response times look like, would also be interesting.

Checkout Hatchbox.io, just started using it myself. You basically pay a flat monthly rate for their Heroku-esque management service and then pay for the servers on your provider of choice separately (e.g. DO, AWS, etc).
Are you finding it mature enough to "just work"? The reason someone pays for something like heroku is they put a high value on "just work", I am really not looking to be troubleshooting weird bugs or figuring out weird edge cases in my ops, that's the whole point here!

I'll take a look, it definitely looks interesting, thanks!

Hard to say because I've only been using it for a week, but so far it has just worked (which is what I am looking for as well, I don't have the time or patience for anything less).
I've been looking for something between Heroku (too expensive, too many features) and Dokkku (too much hassle, I have to maintain my own security and patches) and this looks like exactly the thing I wanted, except it looks like it's only for Ruby? I use a combination of Python, Elixir, and Haskell, so I'd love it if they did support other langs.
Take a look at digitaloceans new app platform or render.com. Render allows you to run distributed Elixir, which is nice. And with digitalocean, if you outgrow app platform you could just move to their hosted k8s.

These both are k8s under the hood but with everything extracted away to a heroku level, but much cheaper. Additionally, they both provide static site hosting like netlify.

With a standard dyno, you get something like 1/15th of a core on the underlying EC2 instance. IMO, they're best for workers where latency isn't an issue.

For user-facing work, I use performance dynos.

Heroku _is_ expensive, but in exchange, you don't have to worry much at all about the ops side of things.

YMMV, it may not be suitable if you need to be profitable each month and can't afford to spend the baseline cost of, say, $1,000/month.

Thanks. I agree that heroku is an amazing service, a really impressive product.

But once you are using a single performance dyno, you are unlikely looking at a bill that's only "couple hundred dollars a month".

Thanks for confirming you use performance dynos for user-facing stuff -- I thought I was going insane discovering that it didn't look like standard dynos were suitable for that for me -- is "everyone else" using them though? The heroku docs imply they are indeed... standard (that's the name), and the performance dynos are for unusual performance needs.

Which is not what it was looking like to me.

Based on my current investigations, I agree being prepared to spend $1000/month is a better back of the napkin to-start-with estimate.

Which, sure, is quite possibly still a value compared to the number of hours you'd be spending setting up and maintaning something else. Quite possibly! But it's not "a couple hundred dollars a month".

For the one man projects I'm thinking of starting there's a good chance I will make at best 100 a month for the first couple months, having probably only one customer for that time.
Agree on Heroku as well - the cognitive overhead they help take care of is well worth the money. There are other commenters saying "but it's expensive!", but your comparison should be Heroku vs. a Devops person (or yourself), not Heroku vs. <cloud_service_that_you_manage_yourself>.

My one complaint is that their support seems to have gotten worse over the years - they used to have great support engineers across the board, but have hired poorly recently, specifically in off-shore markets, so depending on what time you send in a ticket request, you may get someone who doesn't fully read your ticket or comprehend the situation, and just fires back a canned reply.

This usually gets solved if there is enough back-and-forth as they then seem to escalate it properly, but I have noticed that the initial reply to support tickets are not as good as they used to be.

It takes me about 2 hours to setup docker container + Github pipeline. I don't see why this is difficult. I am not saying go all out and manage your kubernetes cluster. I am saying that packaging your application in a docker container and running it in a VM is pretty straight forward.
Heroku also handles databases, backing them up, etc. And scaling up or down.
DigitalOcean also has managed databases+backups. I'm not sure how it compares on price/reliability though.
Heroku is terrible value for money. You can very easily use one of the dozens of free & open source deployment managers or CLIs for EC2 and get the same ease of use at 1/10-1/20 of the cost. It's good for hosting a hobby project for free or $5/mo and forgetting about it, but it doesn't make any sense for a startup.
Or side project. There is a learning curve to heroku of its own, and you could be spending that time just learning how to deploy docker containers.
Is there an open-source Heroku alternative? I've used Heroku in the past and the "just deploy application code" nature is great for most applications but you're locked in to one vendor. Cloud Foundry?
I tried using AWS, Digital Ocean and other hosting platforms for my hobby projects, but every time I keep running into different problems and eventually give up and go back to Heroku - and things just work.

I would never recommend Heroku for my employer or for any company that has real production loads and a budget for administrators that know how to set it all up: Heroku does seem to get prohibitively expensive at larger scale. But for hobby projects that get couple of hundred requests per day this is more than enough, and if one of them gets too successfull, I'll just pay someone for a day or two of work for migrating my code to other hosted platform - and since I never use vendor-specific tech, this shouldn't be too hard to do.