Why Kubernetes?
Why Kubernetes? Is it just a shiny new object or the game changer we say it is? Let’s talk about it.
Infrastructure Engineering and System Administration are not new concepts at all. We have been building and deploying software to servers and managing multiple systems since the dawn of the internet. However, computer scientists, researchers, and engineers kept looking to solve the problem of “scale efficiency”.
Scale efficiency refers to how a system (even outside the DevOps context) can maintain the same level of performance or even optimize its performance as it grows in size.
Let’s look at a business for instance. Say you are an entrepreneur and you own a bakery. When you are first starting, you are the baker, you fulfill the customers’ orders (logistics/supply chain), you tell your friends, strangers, and your family about your new bakery (marketing), and you make sure your customers get what they want in quality (product and retention), etc. and you do all this by yourself. If by some share force of luck, you have a sudden exponential growth (perhaps you went viral on Twitter for being the best cake store in all of Scranton), you are very likely to shut down completely as you may not be able to handle the number of customers that you would now have to handle.
This is very similar to software engineering. Applications are built and deployed to servers. Managing the resources on servers as the servers handle more workloads can quickly become a challenging process if every application is deployed as a binary to be managed directly by the server processor.
Packaging applications and automating the process of managing them would indeed be a game changer. And this is what Kubernetes offers us.
We are now able to design our infrastructure, still with the same system engineering principles like clustering (grouping computers to act as one larger unit towards a particular task), virtualization (isolating and partitioning hardware resources to form separate computing units), master-slave architecture, containerization (packaging applications as agnostic, lightweight executable components), and handling the processes running on our server nodes with a single tool that helps us automate many of our operation processes.
Kubernetes and Container orchestration builds on many system engineering principles and applies them to the management of containers. Understanding system engineering is an easy way to work better with Kubernetes, learn container orchestration faster, and be able to extend its capabilities to meet your specific needs.