If you think about using and applying new technologies to fulfil your app users’ increasing expectations, the most fundamental question you have to answer is: why? not how?
Easing the pain in IT operations, app development, system design and testing is an excellent point to start. How to make our (IT) lives easier? And as usual, one question leads to more questions, so here we go:
Why Containers?
Container technology is a great concept borrowed from the transport industry and applied to IT problems, which look very similar to those in the transport of goods at scale. Standardization to make handovers and pickup easier as well as the transportation itself. Standardization triggers better compatibility, which is a segway to optimization resulting in higher efficiency.
Can you tell if the last sentence was about the shipping industry or the software industry? I don’t think so, not without additional context. The similarity becomes apparent and the fact that the concept of a container is interchangeable applicable obvious. The challenge many of us know from developing an app in an environment and running it in another, plus the pain you can experience in this endeavour is addressed using the container concept.
I believe that the future of IT is in containers. May sound provocative, but if you think about it and consider the change introduced over the last years in IT development and operations, you might agree with me.
Let’s look at three distinct deployment models from the past decades:
- Physical Deployment
- Virtualized Deployment
- Containerized Deployment
Every step into a new deployment model was triggered by improvement and benefits on the one hand and challenges and needs on the other. The focus of all models was to deliver and run applications. Running apps become more demanding and by that more challenging for people responsible for it. Hence, containers are the escape route of these areas’ problems, but they are not the entire solution. They are leading the way to the next guiding question.
Why Kubernetes?
If you resolve many of your development and operations challenges with the container concepts, you quickly introduce new ones.
Orchestration and management of numerous loosely coupled components are the most demanding concerning scaling services, handling complexity, fixing problems (like crashing nodes) and controlling resources (humans, cloud components) needed for operation.
We have good news; there is a solution to these orchestration difficulties available today. Kubernetes. What is Kubernetes in layman’s terms? The shortest and most comprehensive explanation I could find is this quote from Dan Kohn, former executive director of the CNCF:
Containerization is this trend that’s taking over the world to allow people to run all kinds of different applications in a variety of different environments. When they do that, they need an orchestration solution in order to keep track of all of those containers and schedule them and orchestrate them. Kubernetes is an increasingly popular way to do that.
Follow this blog for the next part on which Kubernetes environment to choose.