Understanding the Popularity of Containerization: Unveiling its Advantages
When I started at *** Org as an employee, I encountered Java applications in the form of EAR (Enterprise Archive) and WAR (Web Archive) files. These applications consumed significant memory and were deployed on bare metal servers.
Nowadays, the industry is buzzing about Microservices, which are lightweight applications. Due to their small size, containers have become the preferred choice for deploying these microservices. With this in mind, I decided to write this article to provide a better understanding of the comparison between Bare metal, Virtual Machines (VMs), and Containers.
Imagine:
- Bare metal servers as independent landed houses.
- Virtual Machines as multi-floor apartments.
- Containers as single rooms.
Bare Metal Servers:
Bare metal servers typically offer ample resources and are not shared among projects for security reasons. Setting up a bare metal server involves buying the hardware, installing the operating system, providing power and network connections, and arranging physical space and cooling. The provisioning time for such servers is quite high, and much of the hardware resources go unused except for the application's needs.
Virtual Machines:
Virtual machines brought a revolutionary change to the application landscape. Cloud computing relies heavily on virtualization, allowing a single bare metal server to be divided into multiple servers with different Guest Operating Systems. Each VM provides clear isolation, enabling different projects to host their applications independently.
Containers:
Containers abstract the underlying Operating System from the application, allowing it to run efficiently with minimal resources while still addressing security concerns. In the development environment, applications may work perfectly, but issues can arise when moving to production due to mismatches in package versions between non-production and production servers.
Working in DEV but not working in PROD is a universal problem. This is because we often take more care of PROD servers but not DEV servers. So there is always a mismatch between the packages and their versions among NON-PROD and PROD servers.
We can create an application as a complete suit of
OS + Packages required + Application Runtime + Application Code.
This complete suit is called an image. The underlying Host OS can be anything but this image works exactly the same in all environments. OS used by images can be the bare minimum and usually will not have unnecessary packages.
Conclusion:
Finally let’s compare the features of Bare metal, VM and Containers from the Application perspective.
You can notice Security and performance features are lacking in Containers when compared to bare metal, we need to take little extra to achieve security and performance using some methods.
Comments
Post a Comment