A journey from a traditional to a containerized deployment
Docker, so this is a buzz word that all of us get to hear so often these days. We at MasterCom have worked on a lot of projects involving the traditional deployment methods. Each time a deployment had to be done or an application instance had to be set up, the amount of work involved got us thinking if we could dockerize this, i.e., if we could deploy using Dockers and reduce the effort.
Traditional deployments involve setting up of the entire infrastructure from scratch, i.e., create a VM, Install the required OS/ applications/dependencies, move the application code, deploy and run it.
Configuring each of the software’s to support the application has to be done with each set up. The VM needs continuous maintenance like the upgrades, patches, etc.
We also have to note that in scenarios where a single physical machine is running multiple virtual machines, there’s a greater risk for a single point of failure. This also affects the efficiency of the VM in general.
But with Docker the entire process is simplified i.e., Docker provides a containerized approach for building applications. Unlike virtual machines that require a guest operating system to run on, Docker uses an abstraction engine called ‘Docker Engine’ which abstracts the operating system level details.
The Docker-based containers eliminate the effort involved with setting up virtual machines and making sure your applications run seamlessly across multiple such instances.
Docker is effective when it comes to creating a snapshot of your application into an image and deploying it across multiple environments – development, test and production.
So, the process of deploying using a Docker image involved the below steps
1. Create a docker image with all the applications and libraries needed.
2. Link the docker to the code path
3. Run the docker image in the environment where your application needs to be hosted.
4. Host the application within the docker.
So once the docker image is created, multiple instances of the application can be set up in a jiffy like the UAT, development and Production.
The docker provides the isolation required for each environment being set up.
This set up also helps achieve load balancing with multiple instances of the application running in a server, hence if one goes down, the other takes over.
Given that the dockers behave as logical entities running on the same operating system as the host, it offers a very efficient alternative to the traditional Approach
Dockers have basically solved a lot issues including the one we set out to resolve.
1. Reduce the time taken for an instance creation by huge proportions.
2. Improved efficiency
3. Less manual work or human intervention needed in the deployment process.
Author: Gayathri Devi (Technical Architect)
Contributor: Kishan Kumar ( VP, Digital Transformation)