![]() |
VOOZH | about |
We’re so glad you’re here. You can expect all the best TNS content to arrive Monday through Friday to keep you on top of the news and at the top of your game.
Check your inbox for a confirmation email where you can adjust your preferences and even join additional groups.
Follow TNS on your favorite social media networks.
Become a TNS follower on LinkedIn.
Check out the latest featured and trending stories while you wait for your first TNS newsletter.
Software containers are all the rage these days. For good reasons, they bring many benefits and may push forward the revision of entire software stacks developed in-house. Containers are at the base of the cloud-native phenomenon, bringing many benefits to IT systems. However, the emphasis put on container technologies and the “cloud native way” may make you forget that it’s all made possible by the underlying layers of IT systems — hardware and the hypervisor.
This isn’t to say that the adopters and proponents of containers are misguided. Rather, there tends to be a lack of clarity regarding which technology suits a specific purpose and what customers get billed for.
As I’m about to explain, there is no opposition between containers and virtual machines. Rather, it is more about the realization that oftentimes, containerizing applications implicitly rely on virtualizing the system on which the containers will run. Of course, the perception is very different. For years, the IT industry has relied on virtualization to manage application layers across organizations. Now containers have disrupted the application management market — with good reason, I might add.
Does this mean that the IT industry was wrong all those years? No, because application management using systems virtualization (i.e., server virtualization) is an effective solution in several cases. If applications are complex and rely on data and software dependencies that may not be directly tied to the application in the IT infrastructure, containers might not be able to meet the requirements of complex applicative architectures. Containers will provide the application portability and management but will not bring an effective solution to the environment in which the application is running. On the other hand, virtual machines will deliver a fully portable and manageable environment — in other words, a fully virtualized system.
Complex systems in which containers and container pods run tend to require virtualization. Despite what can be read in the official documentation of container technologies, containers can run on bare metal only if the system is simple enough. As soon as a complex environment is required, which tends to be the large majority of enterprise deployments, containers will run in an essentially virtualized environment. This may mean that containers are running directly on top of virtual machines or that containers are running inside large and complex environments that are themselves entirely virtualized.
The question then is: Why have we come to see the two technologies at odds? The main reason is practical: For years, virtual machines have been used to handle application management, something they can do but is not the best at. Containers excel at the task of managing applications. However, as soon as data streams and a handful of applications running across different operating systems work together, containers will only be part of the answer. The broader part is with virtual machines. Therein lies the crux of the story: There is no true opposition between containers and virtual machines; they are mostly complimentary.
In reality, there is not a massive adoption of containers to the detriment of hypervisors. Rather, the current state of the market suggests three use cases that are either distinct from one another or may sometimes be observed happening at the same time:
Virtual machines and containers work together in each case to provide IT operations with efficient architectures and workloads. There is no opposition but rather a co-dependence. The real difference ultimately lies in the requirements and the use case. Systems management and complex environments will emphasize virtualization, while application management will rely more on containers.