Leave us your email address and be the first to receive a notification when Davy posts a new blog.
Back to The Future (of Kubernetes)
As an engineer I do have some Lab experience with Kubernetes and Tanzu. It is hard though to step in right in the middle, especially considering the fast changing (application) landscapes of today. That is why I decided to take a step back and start from the very beginning. Even though it feels like a step back, it is a step back into the future of Kubernetes. I do believe it is a necessary step to eventually fully embrace the future of Kubernetes and the cloudnative world it belongs to.
Hopefully I am able take you on a journey into cloudnative, Kubernetes and eventually DevOps. Not only from an engineering point of view, but also while the business in toconsideration.
On Twitter I found people talking about 12DaysOfK8s. This is originally a VMware blog, which is good, because I am a VMware minded guy. That is where I took off and decided to blog about the interesting things that stick with me.
A quick disclaimer. This blog is my interpretation of the knowledge I have and the information I gathered. If you feel like something I wrote is really misinterpreted or simply not correct. Please feel free to contact me and let me know.
As a tech-savvy guy I am all about the technical stuff, especially code. That is what I do in my day job and it makes me happy. Kubernetes is all about code and it wants YAML scripts as food. Yummy! However, I noticed that I found it difficult to translate my technical enthusiasm to real-life business considerations. To me this is very important though, because without a business there is no use case. So I summed up some possible business questions and considerations that I will try to answer along the way.
What is Kubernetes
In a containerized application landscape without any orchestration you might encounter serious challenges when it comes to managing and scaling. This is what Kubernetes tries to solve. The authors of Kubernetes have the following definition
“Kubernetes (K8s) is an open-source system for automating deployment, scaling, and management of containerized applications.”
With Desired State Management as a killer feature. The desired state approach is what makes Kubernetes good in what it does. Let me explain what it is and why it is important for your business.
Desired State Management in Kubernetes
Desired State Management (DSM) simply enforces the state of an application in a declarative and desired state based approach. This means a YAML file describes the application and Kubernetes enforces it. Kubernetes will make sure the desired state will be satisfied and maintained. When the application state changes, Kubernetes will detect this and automatically try to enforce the desired state.
In its most simple form it looks something like this:
How does this work in case of a failure, or multiple failures?
Let’s say that in the YAML file I declared a deployment with 6 replicas (pods) for a specific part of my application. The pods are evenly distributed over 3 nodes. One node fails. Like this:
Because I declared 6 replica’s in the YAML file, Kubernetes will now try to enforce this setting. When sufficient resources are available, pod 5 and pod 6 will be started on node 1 and node 2.
This is an automated process and doesn’t need any kind of external monitoring or human intervention. That is some business value right there!
Another big benefit of DSM is rolling updates. Let’s say I have an important update for the (containerized) FAQ area on my website. Downtime is unwanted. With Kubernetes and Desired State Management this is easy. I will simply edit the YAML file and point to the updated image. After applying the updated YAML file Kubernetes will replace the existing pods with the updated ones. It does this one by one. Until it meets the Desired State criteria again. Visualized it looks like this:
When all pods are replaced and successfully updated, it means my FAQ section has been updated without any downtime. Again, business value!
This would not be possible with a monolithic website or application.
The shift from monolithic to containerized applications
As I mentioned before, the shift from traditional (monolithic) applications to modern (containerized) apps in a cloudnative landscape is happening fast. With modern apps the time from development to market is significantly reduced with a much faster lifecycle. Among other things this not only saves money and time, but also leads to a better customer experience. Let's try to visualize this, starting with the traditional Software Development Life Cycle for monolithic applications.
With a monolithic application this process has to be followed for every change or update to the application. That means for every aspect of the application. It is not hard to imagine this is time consuming, costs money and customer satisfaction may decline if fixes and updates are slow. This however, is how it has been done for years and years. The landscape is changing though.
The SDLC process also applies to containerized applications. With a big difference. Modern apps consist of many containers and microservices. Let's call them building blocks, like Lego and modular building. I will take the part that I want to fix or update. That part goes through the process of SDLC and I put it back where it belongs when finished. Without affecting the rest of the application. It is also possible to work on multiple building blocks, in different stages, at the same time. This is how I can achieve faster development to production times.
With Kubernetes as the orchestration and managing tool I can control every stage of the deployment. This assures that as a business I can achieve fast software delivery with less infrastructure than I would need with a traditional approach. With quick feature delivery and a high code deployment frequency I can help my customers to stay focussed on innovation. This will lead to a better customer experience and eventually lower the overall costs. Not hard to see the business value there, right?
Kubernetes around us
Containers, Kubernetes and Modern Apps are already all around us. Maybe you don’t realize this because you got used to those smooth working webpages, little downtime and easy updates pretty fast. One of the most well-known examples for Kubernetes today is probably Netflix. They needed a solution to organize and orchestrate their containerized content. They wanted smooth updates and no downtime. Kubernetes took a big part in solving their problem and made Netflix what it is today.
Also there is a growing number of vendors who deliver their software as a containerized application. Where you, as the customer, have the option to apply a YAML file to install the software. Today this is still optional and other installation methods are also provided. It is a strong sign though that tells in which direction the world is going.
The landscape is changing and it might benefit you and your company if you learn about Kubernetes today.
Thanks for reading, comments and questions are always welcome.
Questions, Remarks & Comments
If you have any questions and need more clarification, we are more than happy to dig deeper. Any comments are also appreciated. You can either post it online or send it directly to the author, it’s your choice.