Reclaim the Stack
A team at mynewsdesk.com developed a Kubernetes-based platform to replace Heroku, achieving 90% cost reduction and 30% performance improvement, while enhancing developer experience and open-sourcing the entire stack.
Read original articleA team at mynewsdesk.com has developed a Kubernetes-based platform intended to replace Heroku for their SaaS product. This initiative took seven months and resulted in a 90% reduction in costs and a 30% enhancement in performance. Additionally, the project improved the developer experience by decreasing deployment times and providing faster, more accessible tools. The entire stack has now been open-sourced, allowing others to replicate these results in a matter of days rather than months. The initiative is branded as "Reclaim the Stack," and resources such as documentation and a Discord server are available for those interested.
- The new platform offers a 90% cost reduction and 30% performance improvement.
- Developer experience has been enhanced with faster deployment and better tools.
- The entire stack has been open-sourced for public use.
- The initiative aims to help others achieve similar results in a shorter timeframe.
- Resources for support and collaboration are available through documentation and a Discord server.
Related
Maximizing Terraform modules for platform engineering
The New Stack website focuses on Terraform modules, community engagement, DevSec challenges, software development topics, and industry trends. It offers resources, articles, and newsletters for software engineering leaders and developers.
DevOps Isn't Dead, but It's Not in Great Health Either
DevOps faces challenges but remains relevant. The New Stack provides resources on software engineering, DevSec collaboration, and various tech topics. Subscribers receive tailored content and updates on software development trends.
From Cloud Chaos to FreeBSD Efficiency
A client shifted from expensive Kubernetes setups on AWS and GCP to cost-effective FreeBSD jails and VMs, improving control, cost savings, and performance. Real-world tests favored FreeBSD over cloud solutions, emphasizing efficient resource management.
We saved $5k a month with a single Grafana query
Checkly's platform team optimized costs by switching to Kubernetes pods from AWS ECS, reducing pod startup times by 300ms. This led to a 25% decrease in pod usage, saving $5.5k monthly.
Cozystack v0.11 Open Source platform has been released: S3, tenant isolation
Cozystack version 0.11 introduces S3 support, enhances tenant isolation, updates the user interface, improves documentation, and upgrades components like Cilium and LINSTOR for better functionality.
- Many commenters question the long-term maintenance and complexity of managing a Kubernetes setup compared to Heroku, emphasizing the need for dedicated resources.
- Several users share negative experiences with Kubernetes, citing issues with upgrades and operational challenges that can lead to downtime.
- There is skepticism about the claimed cost reductions and performance improvements, with some suggesting that the comparison to Heroku is not straightforward.
- Some commenters advocate for simpler alternatives to Kubernetes, arguing that many startups may not need such a complex solution.
- Others express interest in the open-source aspect of the project and its potential benefits for those familiar with Kubernetes.
There are so many tools that make it easy to build and deploy apps to your servers (with or without containers) and all of them showcase how easy it is to go from a cloud account to a fully deploy app.
While their claims are true, what they don’t talk about is how to maintain the stack, after “reclaiming” it. Version changes, breaking changes, dependency changes and missing dependencies, disaster recovery plans, backups and restores, major shifts in requirements all add up to a large portion of your time.
If you have that kind of team, budget or problem that deserves those, then more power to you.
With that cost reduction you also removed monitoring of the platform, people oncall to fix issues that appear, upgrades, continuous improvements, etc. Who/What is going to be doing that on this new platform and how much does that cost?
Now you need to maintain k8s, postgresql, elasticsearch, redis, secret managements, OSs, storage... These are complex systems that require people understanding how they internally work, how they scale and common pitfalls.
Who is going to upgrade kubernetes when they release a new version that has breaking changes? What happens when Elasticsearch decides to splitbrain and your search stops working? When the DB goes down or you need to set up replication? What is monitoring replication lag? Or even simply things like disks being close to full? What is acting on that?
I don't mean to say Heroku is fairly priced (I honestly have no idea) but this comparison is not apples to apples. You could have your team focused on your product before. Now you need people dedicated to work on this stuff.
Big mistake. Overnight, the cluster config files I used were no longer supported by the k8s version DigitalOcean auto upgraded my cluster to and _boom_. Every single business was offline.
Made the switch to some simple bash scripts for bootstrapping/monitoring/scaling and systemd for starting/restarting apps (nodejs). I'll never look back.
[0] https://kamal-deploy.org [1] https://kamalmanual.com/handbook/
If you’re looking for something simpler, try https://dokku.com/ (the OG self-hosted Heroku) or https://lunni.dev/ (which I’ve been working on for a while, with a docker-compose based workflow instead). (I've also heard good things about coolify.io!)
I'm starting to suspect the wide range of experiences has to do with engineering decisions. Nowadays, it's almost trivial to over-engineer a Kubernetes setup. In fact, with platform engineering becoming all the rage these days, I can't help but notice how over-engineered most reference architectures are for your average mid-sized company. Of course, that's probably by design (Humanitec sure enjoys the money), but it's all completely optional. I intentionally started with a dead-simple EKS setup: flat VPC with no crazy networking, simple EBS volumes for persistence, an ALB on the edge to cover ingress, and External Secrets to sync from AWS Secrets Manager. No service mesh, no fancy BPF shenanigans, just a cluster so simple that replicating to multiple environments was trivial.
The great part is that because we've had such excellent stability, I've been able to slowly build out a custom platform that abstracts what little complexity there was (mostly around writing manifests). I'm not suggesting Kubernetes is for everyone, but the hate it tends to get on HN still continues to make me scratch my head to this day.
This is not my area of expertise. Does it add a significant amount of complexity to configure this kind of system in a way that doesn’t require trusting the network? Where are the pain points?
I don't mean to sound dismissive, but maybe the problem is just that Heroku is/was slow and expensive? Meaning this isn't necessarily the right or quote-unquote "best" approach to reclaiming the stack
It’s nice seeing some OSS-based tooling around k8s. I know it’s a favorite refrain that “k8s is unnecessary/too complex, you don’t need it” for many folks getting started with their deployments, but I already know and use it in my day job, so it feels like a pretty natural choice.
I am in a company with dedicated infra team and my CEO is a infra enthusiastic. He use terraform and k8s to build the company's infra. But the results are.
- Every deployment take days, in my experience, I need to woke for 24 hr streak to make it work. - The infra is complicated to a level that quite hard to adjust
And benefits wise, I can't even think about it. We don't have many users so the claimed scalability is not even there.
I will strongly argue startup should not touch k8s until you have fair user base and retention.
It's a nightmare to work with.
If I can serve 3 million users / month on a $40/month VPS with just Coolify, Postgres, Nginx, Django Gunicorn without Redis, RabbitMQ why should I use Kubernetes?
There's a lot of disagreements pitting one solution against another. Even if one hosting solution were better than another, the problem is there are SO MANY solutions that exist on so many axis of tradeoffs, it's determine an appropriate solution (heroku, reclaim, etc) without consideration to its application and context of use.
Heroku has all sorts of issues: super expensive, limited functionality, but if it happens to be what a developer team knows and works for their needs, heroku could save them lots of money even considering the high cost.
The same is true for reclaim. _If_ you're familiar with all of the tooling, you could host an application with more functionality for less money than heroku.
(From https://reclaim-the-stack.com/docs/platform-components/ingre...)
An I reading this right that they built a k8s-based platform where by default they can't horizontally scale applications?
This seems like a lot of complexity to develop and maintain if they're running applications that don't even need that.
What are the advantages over the (free) managed k8s provided by DigitalOcean?
---
Gosh, I'm so happy I was able to jump of the k8s hype train. This is not something SMBs should be using. Now I happily manage my fleet of services without large infra overhead via my own paas over Docker Swarm. :)
Remember 2022? https://www.bleepingcomputer.com/news/security/heroku-admits...
Works grand until it blows up in your face for non obvious reasons
That’s definitely mostly a skill issue on my end but still would make me very wary betting a startup on it
I thought this was either a joke I was missing, or a rant about Kubernetes. It turned out it was neither, and now I am confused.
And heroku is based on LXC containers. I'd say it's almost the same thing.
What's the scale of this service? How many machines are we talking here?
Curious what accounts are being attributed to said costs.
Many new maintenance-related lines will be added, with only one (subscription) removed.
At Ubicloud, we are attacking the same problem, though from a different angle. We are building an open-source alternative to AWS. You can host it yourself or use our managed services (which are 3x-10x more affordable than comparable services). We already built some primitives such as VMs, PostgreSQL, private networking, load balancers and also working on K8s.
I have a question to HN crowd; which primitives are required to run your workloads? It seems the OP's list consists of Postgres, Redis, Elasticsearch, Secret Manager, Logging/Monitoring, Ingress and Service Mesh. I wonder if this is representative of typical requirements to run HN crowd's workloads.
Wouldn't a single machine and a backup machine do the job?
Are there plans to address that too long term?
Related
Maximizing Terraform modules for platform engineering
The New Stack website focuses on Terraform modules, community engagement, DevSec challenges, software development topics, and industry trends. It offers resources, articles, and newsletters for software engineering leaders and developers.
DevOps Isn't Dead, but It's Not in Great Health Either
DevOps faces challenges but remains relevant. The New Stack provides resources on software engineering, DevSec collaboration, and various tech topics. Subscribers receive tailored content and updates on software development trends.
From Cloud Chaos to FreeBSD Efficiency
A client shifted from expensive Kubernetes setups on AWS and GCP to cost-effective FreeBSD jails and VMs, improving control, cost savings, and performance. Real-world tests favored FreeBSD over cloud solutions, emphasizing efficient resource management.
We saved $5k a month with a single Grafana query
Checkly's platform team optimized costs by switching to Kubernetes pods from AWS ECS, reducing pod startup times by 300ms. This led to a 25% decrease in pod usage, saving $5.5k monthly.
Cozystack v0.11 Open Source platform has been released: S3, tenant isolation
Cozystack version 0.11 introduces S3 support, enhances tenant isolation, updates the user interface, improves documentation, and upgrades components like Cilium and LINSTOR for better functionality.