The operating system was once the most important part of your software stack. In today’s containerized world, however, operating systems are dead—well, almost.
Let me explain. Traditionally, when production environments ran on bare metal, the operating system you used determined virtually everything you did when deploying an application.
I don’t mean just the family of operating system, as in Windows or Linux. I mean the type and version of operating system.
You installed software using installation scripts or packages tailored for your operating system. You configured your applications and services to be compatible with your specific type of operating system. Your environment’s efficiency was determined in large part by the operating system you ran and how it allocated resources.
Virtual Machines and the Operating System
The introduction of virtual machines made operating systems less important in some ways.
Virtual machine images could be moved easily between different hosts, regardless of what the server’s host operating system was. They also reduced the importance of the host operating system in allocating resources.
But operating systems still matter in key ways with virtual machines because you need an operating system to run inside each virtual machine.
The Operating System in a Containerized World
When you migrate your workloads to containers, many of the operating system-specific considerations go away.
You no longer have to install applications using packages tailored for your system. Instead, you use a container image of your app. The image is the same no matter which version of operating system you use.
The operating system configuration no longer needs to be customized. With few exceptions, operating system variables don’t impact the performance or behavior of containerized applications.
When all of your applications are moved inside containers, the operating system is no longer responsible for divvying up resources. The container daemon handles that.
In short, operating systems cease to matter in many respects when you migrate to containers.
When Operating Systems are Still Relevant
That doesn’t mean, however, that operating systems don’t matter in any way. The type and version of operating system you choose still shapes a couple of important factors:
- You can only run containers built for the family of operating system that you use. In other words, containerized Windows apps can only run on Windows hosts and containerized Linux apps only run on Linux.
- Operating system overhead impacts the performance of your applications. Ideally, your operating system should be as lean and mean as possible. Since it doesn’t play much of a role in running your apps, it doesn’t need to have many components. The more you have going on in your operating system, the fewer system resources you have available to your containerized applications.
Beyond this, operating systems really don’t matter much in a containerized world. The future of infrastructure will be application-centric and in most respects, we won’t have to care which operating systems we use.