What is containerization and why should I use it?
February 8, 2023
Author: Matt Compton
If you follow technology news at all, you’ve probably read headlines about virtual machines, containers, Docker, and others quite a lot. But what do all these terms really mean, and how can you make containers work for you?
What are Virtual Machines?
To understand containerization, we first need to understand virtual machines. Because of the massive increase in available computing power, it’s been possible to create entire systems inside of existing physical hardware. This allows for better utilization of the physical hardware. The primary reason that companies adopted virtual machines was to enable them to make better use of existing hardware. Additionally, it allowed companies to safely separate different parts of their services, or even to rent out excess resources to other companies.
What is a Container?
Fundamentally, containers are similar to virtual machines in that they allow a single physical system to run many concurrent tasks that traditionally would occupy one physical machine. However, containers strip out all data that isn’t needed for their specific task —like running a web server— in order to reduce disk space. The operating system that they run is a hybrid, sharing most core components with the physical system hosting it.
Source: sdxcentral.com
On the left side, you can see an example of how your organization’s processes might look if fully containerized. On the right, is an example with full virtualization.
Examples of Containerized Apps
For a home user, or someone running minimal services for themselves and their friends, it might not initially seem like containers are super beneficial. However, even something as straightforward as a Minecraft server could benefit from being containerized, especially if the specific version being run needs specific programs, like an older Java version. Another use case for a home server operator might be a program that needs to be segmented from the rest of the system, such as a password manager.
Let’s refocus on apps developed by large companies. On the surface, they usually seem to be one cohesive unit. Under the hood, this is almost never true. Take, for example, this diagram of a made-up app. Depending on the status of each given container, the path taken to create the interface for the end user can differ. This also is what powers the increased reliability of containerized services.
Of course, not every workflow ends in something being served to an end user. This is just a simple example to illustrate how containers can improve reliability through the parallelization of processes.
Why Should I Containerize?
There are a variety of things to consider when deciding if containerization is right for you.
Benefits:
- Containers, like their physical equivalent, are self-contained. If you need to switch hosting providers or move to or from bare metal, the process is much less painful.
- Services that are fully containerized can be easily (and sometimes automatically) scaled up to meet increased demand from end users, or scaled down to save cost.
- Because the application visible to your customers is made up of many smaller parts, you can set up automated processes to re-create any faulty components. This can increase reliability, and also ease human troubleshooting even if the automated process fails to fix an issue.
- Your developers can more quickly test changes, as there’s no need to wait for an entire machine to reboot.
Considerations:
- If your organization runs lots of processes on legacy applications, there might be a lot of rewriting needed to best make use of containers
- Some companies rely on processes that aren’t possible to split up enough to benefit from containers.
- Monitoring solutions could become an additional cost, and it’s important to ensure they function properly, especially in hosted environments, so that you don’t incur costs for unused resources.
- Because containers are more directly connected to the host machine than a traditional virtual machine, there are more potential attack surfaces for bad actors to damage your processes.
Conclusion
Containerization is an exciting new approach to managed services, but deciding for sure if it’s appropriate for a given situation is, in the end, a case-by-case topic. Most organizations will likely be able to achieve it, but depending on their needs the time and cost of doing so could vary greatly.
Resources:
- What Is a Virtual Machine (VM)?, Red Hat Inc, 11 May 2022, https://www.redhat.com/en/topics/virtualization/what-is-a-virtual-machine.
- “Containers vs VMS.” Red Hat – We Make Open Source Technologies for the Enterprise, RedHat Inc, 15 Jan. 2020, https://www.redhat.com/en/topics/containers/containers-vs-vms?pfe-6t7ig7xjh=resources.
- “What Is Containerization?” Amazon Web Services, Amazon Inc, https://aws.amazon.com/what-is/containerization/.
- Bigelow, Stephen J. “Five Cons of Container Technology: TechTarget.” IT Operations, TechTarget, 18 June 2015, https://www.techtarget.com/searchitoperations/feature/Five-cons-of-container-technology
- “Diagram of Virtual Machines VS Containers.” Sdx Central, Sdx Central, 28 Jan. 2016, https://www.sdxcentral.com/cloud/containers/definitions/containers-vs-vms/. Accessed 2 Feb. 2023.