Need for Containers - Scenario based

Let's say, we were developing an end-to-end application.

The technologies used were:

  1. WebServer - Node JS

  2. Database - Mongo DB

  3. Messaging - Redis

  4. Orchestration - Ansible

We encountered compatibility issues:-

  1. OS Compatibility: The different services we use in our application must be compatible with the OS version.

  2. Compatibility between different services, libraries and dependencies on the OS.

  3. This compatibility matrix is known as the Matrix of Hell.

Issues faced by Software developer/Testing/Support teams:-

  1. Upgrade components to newer versions.

  2. Changing the database.

  3. Setting up the environment for a developer is tedious.

  4. If there is any new change, we have to check for compatibility between components and underlying hardware infrastructure.

  5. This often led to changes in the application architecture, which is not recommended.

  6. No guarantee of running the application in the same way in different environments.

Solution:-

  1. Creating different completely isolated environments for each component, known as Container.

  2. The popularly used Container technology is Docker.

  3. We can run each component in a separate container with its libraries and its dependencies.

  4. But all these components will be running on the same VM and OS.

  5. Thus, by using container technology, we escaped the Matrix of Hell, by mitigating unnecessary compatibility issues.

  6. For that, We need to build the Docker configuration just once and run it on our environments.

Did you find this article valuable?

Support Parinitha's blog by becoming a sponsor. Any amount is appreciated!