Over the last few years, software containers have dramatically changed the way IT organizations build, deploy, run and maintain applications. The cost benefits and efficiency that containerization offers made it very compelling for IT organizations to adopt. In this article, I will attempt to demystify Docker and Kubernetes through nautical analogies.
Docker and Kubernetes
In 1955, Malcolm Mclean bought a steamship company with the idea to transport entire truck trailers with its cargo still inside. That is the birth of shipping containers which revolutionized transport and international trade in the second half of the twentieth century. The main benefits of this approach are:
- Standardization on shape, size, volume and weight.
- Reduction in shipping costs and seamless movement across the sea, rail and road.
So, by applying a similar concept, container technologies like Docker ensure consistency across multiple developments and release cycles. Docker promotes standardization by allowing the software to run reliably when moved from one computing environment to another. This means that the application will run in the application developer’s laptop, then to a test environment, then finally to a production environment without drastically changing the code.
Regarding cost benefits, the nature of Docker is that fewer resources are necessary to run the same application. Because of the reduced infrastructure requirements, IT organizations save on everything from server costs to the employees needed to maintain them – thus allowing engineering teams to be smaller and more effective.
But implementing containers is not enough and its scalability is an operational challenge. A typical production implementation would require multiple containers, hosts, network configurations, load balancers, apps that need to be configured and ideally all these components should be deployed automatically. It requires planning, and most experts agree that an orchestration tool is a must.
This is where an orchestration tool like Kubernetes comes in.
Inspired by the container ship analogy, Kubernetes is a Greek word that translates to “captain” or “sailing master,” as in the one in charge of the ship. Hence, the analogy of Kubernetes as the captain or orchestrator, of containers through the information technology space.
Imagine Docker containers as packing boxes. The boxes that need to go to the same destination should stay together and loaded into the same shipping containers. In this analogy, the packing boxes are Docker containers and the shipping containers are Kubernetes pods.
All these pods make up the whole application. What you want for this cargo ship is to arrive safely to its destination and avoid the stormy seas of the Internet. Kubernetes, as the captain of the ship, adeptly steers the ship along a smooth path which means ensuring all the applications under its supervision are managed effectively and healthy.
READ MORE: Microservices and containers enable DevOps.
Going back to technical capabilities, Kubernetes provides application deployment, scaling, container management and other capabilities, and it enables IT organizations to optimize hardware resource utilization and increase production uptime through fault-tolerant functionality at speed.
So, what’s the benefit for Dev and Ops teams? Kubernetes helps developers and operations teams quickly solve the problems they struggle with every day.
Ultimately, it’s all about the customers. Organizations that have the right technologies and process in place to adapt quickly and responsively will win the hearts and minds of their customers by continually delivering them a delightful digital experience.
Check out the following videos to learn how Axway’s AMPLIFY API Management solution is configured to deploy and scale, apply self-healing and rolling updates using Docker and Kubernetes.
Demo: API Management EMT using Docker and Kubernetes – Part 1 (Architecture)
Demo: API Management EMT using Docker and Kubernetes – Part 2 (Deploy and Scale)
Demo: API Management EMT using Docker and Kubernetes – Part 3 (Self-Healing and Rolling Updates)