Top
Best
New

Posted by canto 1 day ago

Zero-Downtime Deployments with Docker Compose – No Kubernetes Required(statusdude.com)
82 points | 68 comments
Jumziey 1 day ago|
It's actually fun to see this. Running systems in a lot of different ways are just interesting. I do however get kinda sad at the hate at k8s because it's really good at what it does.

I've seen so many projects bending over backwards to avoid k8s and pay large cloud bills to avoid it at all costs. (ECS and app services are hopelessly expensive and bothersome)

K8s is really good, pretty easy to maintain, but a bit hard to understand. Mostly because distributed, zero down time systems are a bit hard to get by nature. But if you have someone that wants to take it on I've managed k8s clusters, solo, without incident, while doing lots of other stuff too (working with larger teams now though). Not to mention there's a lot of competence out there that can take over if I'd move on. Most of the deep complexity comes with more advance use cases, that wont show up for smaller deployments.

That said, no h8 towards going your own way! If your a solo developer (or small team) for a smallish project, don't feel the absolute need. If you get to the point you need it you should be earning enough to start paying someone to help ya get your app to a distributed system like k8s.

I think it's good to invest the time in understanding k8s though as a professional. Even if you won't directly run it it teaches you a lot about how to think about distributed, zero downtime systems. And what requirements that puts on an app.

000ooo000 22 hours ago||
Balanced takes like this are the only reason I still come back to HN. A shot at K3S in my homelab is in my backlog but young kids have set me back. If you have any material that touches on what you said above I'd appreciate a link. So much crap out there which is just Hello World blogspam.
AviationAtom 20 hours ago||
KodeKloud is worth a subscription. I'm an older learner too and their courseware works well for me.
soco 12 hours ago||
I see stuff like Azure Container Applications like an easy introduction to the world of k8s. Sane defaults, looks managed but you can still get familiar with all the important concepts, and sooner or later you can move to a proper Kubernetes setup while having mastered the ideas behind it. If needed, of course.
amluto 20 hours ago||
I was surprised that there was no mention of two things:

1. Retrying a non-idempotent request on a failure type that does indicate that no action was taken is not necessarily safe.

2. It’s possible and actually fairly common to design a backend that can do a clean shutdown: it stops accepting new requests, completes old requests, then exits. I sincerely hope that Docker’s tooling is good enough for a service to unregister itself before it actually stops accepting requests, but I’m not actually very familiar with using Docker to manage HTTP routing. (I use a home grown tool that is far simpler.)

brumar 1 day ago||
I remember a time where HN was quite critical to the complexity of k8s. After reading top comments, I can see the tide has shifted.
bizzletk 15 hours ago||
CTOs have found reasons to standardize on k8s and it's not just for technical reasons. This was recently discussed last week:

https://notnotp.com/notes/what-job-interviews-taught-me-abou...

https://news.ycombinator.com/item?id=48546428

zug_zug 9 hours ago|||
I used to be critical of almost everyone who used it. Now that I've been learning the ecosystem for a couple years, I'm not as angry about it, and it doesn't affect me as much personally.

I still think almost all of my complaints were valid: - not just container orchestration, more like a whole AWS solution (its own routing)

- has single-points of failure that would be avoided if you just used aws

- unnecessary complexity for almost all use cases

- ecosystem easily allows you to 2x-8x that complexity (helm+argocd+istio+carpenter+dozens more=hundreds of new failure modes)

- fundamentally moves many teams to a "I don't understand why my service is crashing, so let's just bring up more nodes every time rather than ever learning to debug it" mentality.

- All the feature teams that are supposed to "own their own kubernetes implementation for their own services" never do.

Of course a lot of that frustration is more at working at a place with a poorly-operated SOA where it takes a half-dozen services to send an email to a client or send a text or something silly. It sure is a waste of runway to obsess over a SOA when you aren't profitable yet.

But at this point it's sort of a sunk cost because it's become the industry standard. And AI can help with 90% of the complexity, which is it's own yellow-flag, but here we are.

canto 1 day ago||
This or there's a lot of fresh blood ;-)
hnlmorg 16 hours ago||
I’m one of those top commenters who used to be a K8 naysayer. I’m also definitely not young blood.

The reason my position has changed is because:

1. The tooling has gotten better for setting up and managing K8.

2. In two of the last 3 jobs where we opted for a simplified alternative to k8, we came to regret that decision within a couple of years of that decision being made. If you’re core architecture is changing on a timescale of months (not years) then you picked the wrong foundations to build from.

That all said, I still think there is a pragmatic decision that needs to be made. And if I were in the author of this articles position I probably wouldn’t have picked k8s for this task either, despite what I said above. But, and as I said in my comment dismissing this article, they are dealing with low traffic and none of the problems that lend themselves to the benefits of k8. So my criticism of this article is that it’s misleading because their problem is easy but they’re writing as if they’re having to deal With problems of scale when they’re actually not.

maxboone 1 day ago||
Mandatory mention: https://www.macchaffee.com/blog/2024/you-have-built-a-kubern...

But yeah, pretty cool DNS resolving features in HAProxy, that's nifty

manmal 1 day ago|
I‘ve built this anti-k8s stance pre-LLMs, and just realized that, actually, agents should be pretty helpful in dealing with it? Is avoiding kubernetes still advisable for projects that will likely never use its full complexity, given how easy it is to maintain now?
jaggederest 1 day ago||
Kube and helm are ideal for LLM usage, they make what is a fragile kind of thing into declarative, same as terraform for infra at the slightly lower level.
hnlmorg 1 day ago||
> thousands of monitoring checks per minute

That isn’t a lot. You could easily run that from one host. The reason people reach for Kubernetes (and similar) is because they need to scale past that single host dependency.

nullpoint420 1 day ago||
100%. And a shared mental model. I love how I can scale up all my services the same way, across clouds.

It's great.

ghusto 1 day ago|||
You could, but they don't, meaning their argument is still sound (whether they _could_ use a single host is besides the point, they're not doing that).
hnlmorg 1 day ago||
Are you sure they’re not?

They’re multi-region, but that doesn’t mean they’re running across multiple hosts in each region.

Docker compose doesn’t support pooling multiple hosts, so if they are running multiple hosts per region then there’s a lot more complexity to their setup than they’re documenting in that blog. Even if that complexity is human toil managing each host as a separate entity.

tbrownaw 1 day ago|||
> The reason people reach for Kubernetes (and similar) is because they need to scale past that single host dependency.

I have some stuff on single-node k3s. Because it's standard so I don't have to care.

chmod775 1 day ago|||
The reason most people reach for Kubernetes is because it's cool. The entire infra the vast majority of Kubernetes users have could run on a single bare metal machine with a second one for redundancy.

To be fair: using Kubernetes anyways builds the skill just in case you become one of the 0.1% who actually need it down the line.

hadlock 1 day ago|||
You can hire an Azure or Google Kubernetes devops guy and he will be equally comfortable on your AWS EKS kubernetes cluster. And when he leaves, you don't have a six week onboarding process with the new guy to learn all the ins and outs of your totally bespoke, non-standard container orchestration system that was cobbled together by two devs with no operations experience.

K3S takes about 5 minutes to setup the first time and you instantly have an entire universe of standardized operational tooling. I wouldn't touch docker compose with a 20 foot pole for production work.

ghusto 1 day ago||
Docker compose is hardly "totally bespoke".

Setting up K8s isn't rocket science, but maintaining it are offputting, to say the least.

FearNotDaniel 1 day ago||||
As soon as you work in a team, it’s irrelevant whether the project actually needs it. There will be someone who convinces stakeholders that it is necessary and then you just have to fall in line and learn the skills knowing that it is most likely one of the 99.9% of projects where it is just overkill.
switchbak 1 day ago||
Until your project has some success, and it turns out all those "complex" features actually turn out to be extremely useful.

Which is exactly what is happening with us, too bad we didn't choose K8S from the get-go and stuck with a "simpler" tool (gaining very little in the process).

nullpoint420 1 day ago||||
Okay, I'll bite. What if your workload genuinely doesn't fit on one machine? Like load balancing or clustering 20+ nodes for LLM inference?
bigstrat2003 15 hours ago||
Your rebuttal to the parent claiming that almost nobody needs k8s is to bring up a workload almost nobody runs? It seems to me like your argument reinforces the parent's, not undermines it.
temp_praneshp 1 day ago|||
> The reason most people reach for Kubernetes is because it's cool.

This shittake was probably valid 10y ago, I would have agreed with you back then

> The entire infra the vast majority of Kubernetes users have could run on a single bare metal machine

Where are you pulling this out of? A large number of k8s users don't need it, but the alternative you have sounds hyperbolic.

throwaway7783 1 day ago||
..and HA
tallytarik 1 day ago||
docker-rollout also works well: https://github.com/wowu/docker-rollout

The readme covers connection draining with Traefik which should solve one of the issues the author mentions

limaho 1 day ago||
Are you monitoring resource utilization per container? Do notifications get sent out when container(s) become unhealthy? How are you handling secrets?

These are things I'm trying to figure out at work using Podman. Would love to hear about any experience in these areas.

variety8675 1 day ago||
> There's a mass delusion in the industry that you need Kubernetes to run a serious production service. You don't. At StatusDude, we serve thousands of monitoring checks per minute, run multi-region workers, and deploy multiple times a day

This is pretty small scale, Kubernetes comes in when you've got a larger workload.

k_roy 1 day ago||
The whole reasoning behind this is flawed.

“We don’t know how to scale Traefik so we went with haproxy”

Well doh. Haproxy is designed for this. You can make haproxy serve copious amount of traffic on a single arm core and a little bit of ram. Imagine what you can do with a few replicas on your large clusters.

This has nothing to do with the choice of CI/CD or docker versus kubernetes.

canto 1 day ago|||
While I agree with you I'm not sure the rest of the world does.

Over the past decade, I'm seeing k8s used everywhere for everything, companies setting up clusters to run literally one simple app with couple of hundred requests per hour.

phito 10 hours ago||
We do this because we need redundancy. Are there non kubernetes alternatives for HA/redundancy that are worth it?
_def 1 day ago||
In theory. I read so many times now where people report they use it and don't really need it, and I've seen it myself now too. Still very anecdotal, but it seems somethings there
dwa3592 1 day ago|
>>zero-downtime

the site is down for me.

More comments...