WTF! I thought we settled this ages ago. Swarm is dead and Kubernetes cleaning up?!
Well… if you believe everything you hear, then sure, you’ll think Swarm is dead and K8s is everywhere. But reality’s a bit different.
On the Swarm front…
Swarm is very much alive, and the immediate future looks strong.
As we speak, customers have it in production and love it. Plus, they’re not seeing a lot of business requirements telling them to throw it out. In fact, the opposite is true — customers are pressing the community to ramp up development.
On the topic of development, things like CSI support are rumoured to be coming, and popular tools such as Prometheus already have native support. So stuff is still happening.
On the positive side, Swarm is simple, great for stateless apps, a great choice for developers, and possibly the best choice for organisations with limited engineering time and talent. The immediate future looks strong.
On the downside, Swarm is less flexible than K8s, doesn’t scale as well as K8s, lacks infrastructure capabilities, and lags behind on stateful workloads. The long-term future is also a bit of an unknown.
On the Kubernetes front…
Kubernetes is alive and kicking. It has an incredible community, strong governance, and it’s future is so freaking bright, you shouldn’t look directly at it!
However, real-world production adoption is lagging a long way behind the hype curve. For sure, people are using K8s in production and loving it, I’m just saying compared to the hype, production usage is lagging. Oh, and a lot of people are struggling with its complexity.
On the positive side, Kubernetes has an immense community and ecosystem, it scales well, has strong infrastructure capabilities, and handles stateful workloads increasingly well.
On the downside, Kubernetes is huge, complex, somewhat disjointed, and iterating fast — too fast for a lot of people.
When I was writing this, I felt like Kubernetes was winning on every front except simplicity. So I threw this crappy table together to confirm my thoughts.
I’ll say two things about the table.
First up, a red square doesn’t indicate utter failure — just that the other option is stronger.
Second up, don’t underestimate the importance of simplicity — ask any of the many people pulling their hair out over Kubernetes. However, Kubernetes is getting simpler every day.
While Swarm and Kubernetes do very similar things, their approaches are very different:
- Swarm is about simplicity
- Kubernetes is about flexibility and extensibility
On the topic of simplicity… I played around with Swarm for the first time in about a year when I wrote the latest version of Docker Deep Dive. I’d forgotten how slick and simple it was and literally fell in love with it all over again. Don’t underestimate the power of simplicity!
On the topics of flexibility and extensibility, not everybody needs everything Kubernetes offers. So, some of the pinked areas for Swarm might be of no importance to some users.
Anyway, Kubernetes is more of a “DevOps” tool, as it offers richer support for infrastructure and operational requirements, such as provisioning and scaling infra, monitoring, logging, and more…
With all of this in mind, Swarm seems a better tool for developers, whereas Kubernetes feels better for DevOps and operations.