My War on Kubernetes
Author
Marcus HeldHi,
I need to make a confession right off the bat: I’m at odds with Kubernetes.
It’s not Kubernetes’s fault, though. It’s my projects. Or rather, the teams I’m part of.
These are teams with a maximum of 30 software developers, plus a few business people and designers on top. But there aren’t that many developers.
These teams don’t need Kubernetes!
No. To put it more bluntly: These teams can’t handle Kubernetes!
“But Marcus. That’s not a problem. I’ve already done this with XY, and it was so easy if you stick to YX and adhere to the ZY principle.”
Yes. I’m not talking about the technical aspect. You just need a few relatively smart and motivated SREs/Admins/DevOps, and then the technical part of Kubernetes won’t cause much trouble. Or at least no more than classic administration.
But the real problem with Kubernetes is the sudden increase in overall complexity.
Suddenly you MUST practice gitOps. Suddenly you MUST do blue/green deployment. Suddenly you MUST understand the abstraction BareMetal->VM->Node->Pod->Container->JVM. Suddenly your application MUST be stateless.
You’re not running Kubernetes with a single component. All of a sudden, you have a ton of components in your system. And each one is a potential bottleneck. Every component in your system is a single point of failure.
Of course, you know this. You’re convinced by Kubernetes. So everything has to be operated redundantly. So even more components in the system. How do I actually perform a data migration with redundant systems? Suddenly I have to ask myself that question.
All these are solvable problems, of course. I’ve solved them many times. There’s plenty of literature on the subject.
But do you really need it? In teams of 30 software developers or fewer, you don’t need it. That’s what I claim.
If you “only” employ 30 developers, you simply don’t have a big enough use case that justifies a Kubernetes with all its complexity. You have other worries. You need to launch your product. You need to make it big in the market. You have specific feature requests that need to be implemented.
You’re not yet concerned with building a system that hundreds of developers can work on. You’re not yet concerned with building a system that can operate completely without downtime. You don’t yet need a system that can handle partial failures.
Your biggest problem is meeting your customers’ needs. That’s what you need to focus on. That’s where you need to invest all your resources. Kubernetes isn’t worth that investment yet.
Rule the Backend,
~ Marcus