The role of operating systems is changing significantly. Due in part to trends like the cloud, it feels like the days when operating systems formed the foundation for application development, deployment and management are over.
So, is it time to declare the operating system dead? Read on for some thoughts on the past, present and future role of operating systems.
The Traditional Role of Operating Systems
When I say that the operating system may be a dying breed, I don’t mean that operating systems will disappear completely. You’re still going to need an OS to power your server for the foreseeable future, regardless of what that server does or whether it runs locally or in the cloud.
What’s changing, however, is the significance of the role of operating systems relative to other components of a modern software and hardware stack.
In the past, the OS was the foundation on which all else was built, and the central hub through which it was managed. Applications had to be compiled and packaged specifically for whichever OS they ran on. Deployment took place using tooling that was built into the OS. Logging and monitoring happened at the OS level, too.
By extension, OS-specific skills were critical for anyone who wanted to work as a developer or IT engineer. If you wanted to develop for or manage Linux environments, you had to know the ins and outs of kernel flags, init run levels, ext3 (or ext4, when that finally came along), and so on. For Windows, you had to be a master of the System Registry, Task Manager and the like.
Why the Operating System May Be Dying
Fast forward to the present, and much of this has changed due to several trends:
Perhaps the most obvious is the cloud. Today, knowing the architecture and tooling of a particular cloud--like AWS or Azure--is arguably more important than being an expert in a specific operating system.
To be sure, you need an OS to provision the virtual servers that you run in the cloud. But in an age when you can deploy an OS to a cloud server in seconds using prebuilt images, there is much less you need to know about the OS itself to use it in the cloud.
Likewise, many of the processes that used to happen at the OS level now take place at the cloud level. Instead of looking at logs within the operating system file tree, you manage them through log aggregators that run as part of your cloud tool set. Instead of having to partition disks and set up file systems, you build storage buckets in the cloud. In place of managing file permissions, groups and users within the operating system, you write IAM policies to govern your cloud resources.
In short, it often feels like the cloud is the new OS.
Kubernetes, and orchestration tools in general, are perhaps taking on the roles of operating systems.
If you deploy workloads using an orchestration platform like Kubernetes, knowing how to configure and manage the Kubernetes environment is much more important than understanding how to manage the operating systems that power the nodes within your cluster. From the perspective of Kubernetes, processes like storage management, networking and logging are abstracted from the underlying operating systems.
Alongside Kubernetes, containers are doing their part to make the OS less relevant. Whether you orchestrate containerized applications with a platform like Kubernetes, containers allow you to take an application and deploy it on any family of operating system without having to worry about the specific configuration of the OS.
In other words, a container that is packaged for Linux will run on Ubuntu just as easily as it will on Red Hat Enterprise Linux or any other distribution. And the tools you use to deploy and manage the container will typically be the same, regardless of which specific OS you use.
If the role of operating systems becomes totally irrelevant at some point, it will likely be thanks to unikernels, a technology that fully removes the OS from the software stack.
In a unikernel-based environment, there is no operating system in the conventional sense. Unikernels are self-hosting machine images that can run applications with just snippets of the libraries that are present in a traditional OS.
For now, unikernels remain mostly an academic idea. But projects like Vorteil (which technically doesn’t develop unikernels but instead “Micro-VMs,” which are very similar) are now working to commercialize them and move them into production. It may not be long before it’s possible to deploy a real-world application without any kind of operating system at all.
In a similar vein, serverless functions are removing the operating system entirely, at least from the user’s perspective.
Serverless functions, which can run in the cloud or on private infrastructure, don’t operate without an operating system, of course. They require traditional OS environments to host them. But from the user’s point of view, there is no OS to worry about because serverless functions are simply deployed without any kind of OS-level configuration or management.
Indeed, the primary selling point of serverless--at least, as it is presented by vendors like AWS--is that there is “zero administration.” The operating system may still lurk in the background, but it may as well be absent as far as developers and IT engineers are concerned.
Conclusion: The Future Role of Operating Systems
In short, then, the operating system as we have known and loved it for decades is simply much less significant than it once was. It’s not going away entirely, but it has been superseded in relevance by other layers that comprise modern software stacks.
If you’re developing or deploying an application today, you may want to think less about which operating system it will run on and more about which cloud or orchestration tool will host it. That’s what really matters in modern IT.