Hacker News new | ask | show | jobs
by DancerOfFaran 1102 days ago
So they went from Heroku buildpack-based ops, to Kubernetes on EKS, through a 3rd party orchestration service? The post is essentially just content marketing for Porter.

This is like a case study in what not to do and I think a future followup to this post will read like a mea culpa. The level of complexity they took on unwittingly is massive, and it seems like little research was done if they chose EKS -- which is easily the worst Kubernetes offering of any of the big cloud providers. Wonder what their billing will look like next month.

Folks getting off Heroku: do yourself a favour and either go to Fly.io + Dockerfiles, use a fully managed service like Render, use ECS in AWS, or if Kubernetes + major cloud is the important part for some inexplicable reason: use GKE.

5 comments

As someone who hasn't used Porter, it would be awesome if you could follow up this oh-so-snarky response with some actual concrete information?

* What is the "unwittingly massive" level of complexity that they took on? Sure, k8s is complicated, but isn't the promise of this platform that it abstracts away all of that complexity? After all, AWS is very complex but we don't say that Heroku users are unwittingly taking on huge amounts of complexity, do we?

* Why the assumption that "little research was done if they chose EKS"? Perhaps the company is already using AWS for other stuff? Doesn't the promise of a managed platform mean that you don't actually have to deal with EKS or GKE directly?

* Your alternative platform suggestions don't really take into account their stated reason(s) for switching off Heroku - optimizing for scaling and lack of devops knowledge. Fly.io or Render are awesome but I wouldn't choose them for a rapidly growing company as they're essentially straight replacements for Heroku. I'm a big fan of ECS but it certainly requires some devops know-how - you better be comfortable setting up the entire AWS networking stack or want to commit energy to learning. I don't know the right answer here but it seems very use case dependent.

AWS copilot is a great CLI for orchestrating ECS stacks. Takes a lot of the pain away
Co-founder and OP here. First off, it's worth mentioning that we did not ask the customer to write this blog post in any way. It was a write-up that taught us a lot about the adoption journey of our own product, so I just thought I'd share it on HN (honestly surprised that it made to the front page).

I've touched on this in the other comment, but I'd like to once again reiterate that Porter is not meant for small scale projects that do not warrant the scalability of something like Kubernetes. We actually advise many people getting off Heroku who are interested in Porter to use Fly.io or Render instead, because for most individuals who are running projects that do not anticipate scale, those platforms make more economic sense.

Porter is designed for companies, not individuals. The base infrastructure Porter provisions alone is around $300, so if your spend on Heroku is less than that, it's more affordable to stay on Heroku or use a platform like Fly.io/Render. For companies who are running at decent scale, however, we've found that Porter starts making sense earlier than you'd think, because cost on platforms like Heroku starts increasing rapidly as you scale beyond a certain point (e.g. a single Performance L dyno on heroku already costs around $500/mo). This particular customer has actually been on Porter for more than a year and had no fluctuations in their billing.

In comparison to ECS, our customers actually tell us that Porter is easier and more developer friendly than ECS (many of our users migrate from ECS as well, not just to improve scalability but for the better developer experience - we wrote about it here: https://www.porter.run/case-study/why-woflow-moved-from-ecs-...). There's no denying that Kubernetes is complicated - do most startups need Kubernetes? Absolutely not. But if it's actually easier to use than something like ECS and as easy as Heroku, why not deploy on the most robust, industry-standard orchestrator that you can customize later and leaves no stones unturned for the future?

Porter supports GKE as well as EKS, and which k8s offering you use under the hood is largely unimportant to the end user because Porter abstracts k8s anyway. Migrating from a platform like Heroku to Porter is just a few hours of work.

Oh so it is content marketing from Porter.

I'm not interested in litigating Porter (which I imagine is awesome) vs. other systems, but it does seem like your target market are dev teams which are light on DevOps skillsets, because you can run these systems for free with a modicum of DevOps chops on the team.

That doesn't make this story any less puzzling from a technical decision-making standpoint.

> it does seem like your target market are dev teams which are light on DevOps skillsets because you can run these systems for free with a modicum of DevOps chops on the team.

Managing infrastructure at scale is not trivial (otherwise, why would full-time devops engineers exist?), and that's why platforms like Porter exists to help companies scale more easily with fewer devops resources. It's the same reasoning as why so many developers like yourself use Fly.io - you could run your applications for free on an EC2 instance instead of paying fly.io/heroku/render a margin on top of it if you have a modicum of devops chops. Yet clearly, these platforms are bringing enough value in the axes of developer experience and reliability that justifies the additional cost for you.

RE your comment in the other thread about there being open source options: it's worth mentioning that Porter is also open-source (repo here: https://github.com/porter-dev/porter). If you want to use Porter purely as a UI on top of your own infrastructure that you are managing yourself, you are more than welcome to take it out on a spin with our OSS repository!

> Fly.io + Dockerfiles

Fly.io is insanely cheap, but you pay for that in stability. My health checks fail a few times per month. I was also annoyed they forced everyone to upgrade to their v2 infra and pricing.

I've felt like v2 is MUCH better than the v1 system, and pricing is still much better than alternatives.

With that said, our core systems are still on GCP and we use Fly exclusively for Next.js UIs so the comparison is to systems like Netlify and Vercel, both of which are far less reliable in our experience, and far costlier (Netlify is at the point of nickel and diming people).

I'm more annoyed that I had to deal with the change. The migration took a couple hours and I'm still not sure if I configured it correctly to mirror the v1 setup I had.

They also changed regions during the migration. My db (hosted in a different app) was in LAX, but the new machines were in SEA.

This was a bug, I'm sorry we broke your app. We stopped migrations when we hit this issue and wrote a bunch more tests. I know this doesn't help you specifically, though.
If you want to use ECS on AWS, or use Cloud Run (+GKE if needed) check out withcoherence.com. In many ways it's similar to Porter as a "PaaS in your cloud" experience - but importantly it is not k8s based. Happy to discuss Heroku migration with anyone who's curious!
The part I like about Coherence is that they aren't pretending to be more than the UI/DX layer around things that are free and open-source.

I'm so not a fan of what YC has done in the last year by funding every "Heroku killer" under the sun without calling out the elephant in the room that Heroku was the accessible DX into AWS, and nothing more. That stuff all exists in the open source world.

I just managed to get a client off their desired path to use kubernetes and set them up with ECS Fargate where they can actually make the real ops work someone else’s problem.