I went to grade school in the mid 1990s, a time when skateboarding was in a cultural upswing. Professional skateboarders were celebrities and every child wanted to be associated with this new definition of cool. I didn’t skateboard, as many around me didn’t, yet every day we sported horribly uncomfortable specialized skating shoes to school. It’s my earliest memory of feeling social pressure and something about it didn’t sit right. The shoes weren’t very comfortable for activities other than skateboarding, so why would I wear them other than because “everyone’s doing it”?
I work in the software industry and trends happen. Right now, Kubernetes is king. Developers love it and we’re all singing its praises. Trendy? Yes. But I’ve come to realize, sometimes we flock to trends because they work and are worth it.
There are objective reasons for building on Kubernetes—hence, that’s why everyone is doing it. Here are a few starting points:
Pods advocate for a decentralized approach to shared services: In contrast to a model where interdependent services each have a common pool of resources that are brokered through a single ingress point (such as a load balancer), the pods concept focuses on providing each service local, dedicated instances of the dependencies it needs. Depending on the application this can make scaling much easier to reason about since you can move the quantity on some high-level unit and all the downstream needs are scaled proportionally naturally. Also, design patterns such as circuit breakers are more naturally integrated, as the fault domain of a runaway service is limited to its local scope.
Kubernetes embraces modularity and abstraction: Google has gone to great lengths to make the API for K8 extremely modular and abstracted, sometimes at the cost of verbosity. The advantage here is that you are less likely to run into issues with expressing unique configurations as your complexity increases. It also allows you to replace individual components (such as where you get your secrets from) with minimal disruption to the rest of your application. This trade-off is often a tension engineers have to walk but K8 has been designed with the upper bounds of scale in mind, which gives you plenty of headroom to grow.
Google is well-positioned to give Kubernetes the support it needs: Unlike other open-source projects that have a corporate benefactor that is heavily dependent on successfully monetizing the technology, Google is perhaps one of the best-equipped software companies to keep the best interests of the project in the forefront. This is not to say monetization is at odds with open-source software, but it can create conflicts when there is a need to restrict features or change directions for competitive reasons. Furthermore, if the company simply fails to create a business around the open-source software, the support network goes away. Google has none of these issues; although it no doubt has an interest in making money from its GKE implementation of K8, it can just as well walk away from the investment like it has with many other of its technology ventures. This means Google is more likely to make decisions based on the technology’s needs until there is some overall consensus internally that the company doesn’t want to be in that business anymore (a better alternative to simply running out of cash).
Yes, Kubernetes is popular, but it’s nice to have clear, objective reasons why. If things get tough during your technology journey, it’s helpful to refer back to why you made this decision for your company. My hope is that this article can help you better articulate the reasons why, which you can share with your team internally. Was it because everyone was doing it? No. It’s because it works.
About the Author / William Jimenez
William Jimenez is Solutions Architect at Rancher Labs. He is a curious systems engineer who enjoys solving problems with computers, software and just about any complex system he can get his hands on. He enjoys helping others make sense of difficult problems. In his free-time he likes to tinker with amateur radio, cycle on the open road, and spend time with his family (so they don’t think he forgot about them). Follow him on Twitter.