Kubernetes and Complexity

 ADVERT:  Digital Ocean is giving you one month free VPS.Try it out HERE
 
      First off: Kubernetes *is* a complex system. It does a lot and brings new abstractions. Those abstractions aren't always justified for all problems. I'm sure that there are plenty of people using Kubernetes that could get by with something simpler.As an example my son (9yo) wanted me to teach him Kubernetes but I started with simple imperative Docker on the command line on a singleton GCE instance. Once he gets those concepts nailed we'll start talking k8s. 
That being said, I think that, as engineers, we tend to discount the complexity we build ourselves vs. complexity we need to learn.When you create a complex deployment system with Jenkins, Bash, Puppet/Chef/Salt/Ansible, AWS, Terraform, etc. you end up with a unique brand of complexity that *you* are comfortable with. It grew organically so it doesn't feel complex.But bringing new people on to help on an organically grown system like this is difficult. They may know some of the tools but the way that you've put them together is unique. This is a place where, IMO, Kubernetes adds value. Kubernetes provides a set of abstractions that solve a common set of problems. As people build understanding and skills around those problems they are more productive in more situations.
There is still a steep learning curve! But that skill set is now valuable and portable between environments, projects and jobs.
        Beyond this, Kubernetes allows for "operations specialization". Not everyone has to be an expert in all parts of the stack. Things like operating a cluster can be handed off to specialists -- either on staff or via a cloud provider.
The story of computing is creating abstractions. Things that feel awkward at first become the new norm. Higher layers aren't *simpler* but rather better suited to different tasks. /11
Modern JavaScript, for example, is incredibly complex. There are a ton of concepts and ideas that are alien to, say, a C++ 3D game engine programmer. When we created Kubernetes we aimed to create the *right* abstractions for modern scalable server side apps. /end
Thanks for reading.Find me on twitter here https://twitter.com/jbeda

Comments

Popular posts from this blog

Why i Love Haskell

Welcome to New Forum

Feature Branching and GitHub