Cloud has brought lot of innovation to the table by exposing API’s and services that can be easily consumed by developers and their end customers. With this mantra, AWS started with S3 and EC2 that allowed storage and virtual machines provisioned with minimal effort and their capacities were increased with ease. As the digital journey kept accelerating for many organizations, their teams started to relook at the way the applications are deployed, and they started decoupling their application to design microservices based architecture for their applications.
Microservices are service based architecture that are composed of loosely coupled components with bounded framework, independently deployable and largely accessed through API’s.
Efficiently building such microservices were possible with adoption of docker containers in large. This resulted in public cloud service providers making their mark by launching various services around containers especially docker containers. Most of us know that docker is an open source-based platform that provides the ability to package and run an application in a loosely isolated environment called a container. The isolation and security provided by the platform allows us to run many containers simultaneously. Applications developed with docker containers are highly portable.
It constitutes some of the basic building blocks starting from
- Docker Host
- Docker Client
- Docker Image
- Docker Registry
- Docker Container
Docker Host : Physical or Virtual host that runs docker daemon which in turn manages the docker images, containers, and networks through API.
Docker Client : It is essentially the primary method for users to interact with Docker Hosts / Daemon.
Docker Registry : Place considered for storing the docker images and Docker Hub is considered as the default location for various docker images.
Docker Images : It is like an image or template in virtual world. It contains list of instructions to create docker containers. One can create new image using a docker file from scratch by defining steps needs to create an image or use already published image in the docker registry.
Docker Container : Container is a running instance from an image. Container instances shall be independently connected to a network and storage. All the above components can be deployed in a virtual environment in Datacenter, private cloud or public cloud and are largely dependent on the strategies adopted by the respective organizations.
Containers offer more flexibility than virtual machines as it is very light weight with only necessary components. It helps application developers to run and deploy applications in various environments efficiently and seamlessly. They are well utilized both in non-prod and prod deployments by constantly monitoring the utilization of resources such as CPU, Memory.
When number of applications built using container platform increases from 10’s to 100’s to 1000’s, these benefits get diluted easily. These are challenged for the following reasons viz scalability, operational challenges with deployments and meeting the availability needs of the application.
To address the above challenges, it warranted many to use container platforms with container orchestration. Entire lifecycle of container is managed through orchestration tools such as Kubernetes, Docker Swarm. Beyond these two, many organizations are focussing on building such orchestration capabilities that reduces issues revolving around scalability, portability, and automation of deployments.
Container Orchestration in Public Cloud Joining the bandwagon, public cloud providers (AWS, Azure & GCP) have developed strong capabilities around container platform management through its managed services. In a nutshell, AWS has managed platforms such as ECS, EKS, RedHat OpenShift on AWS(ROSA). Similarly, Azure provides capabilities with AKS, Azure Container Instance, Azure RedHat OpenShift and GCP provides equivalent capability with managed platform such as GKE. These solutions help customers to build cloud native solutions and augment the capabilities built by these CSP’s for future ready digital platforms.