The last few months saw the emegence of industry standards on containers and container orchestration, leading to initiatives like Open Container Project and Cloud Native Computing Foundation. Red Hat’s OpenShift became the first application deployment platform on top of Docker based Containers and Kubernetes. There are many other vendors planning to offer platforms using Docker and Kubernetes. The momentum around Open Container Project and Kubernetes got me thinking about potential correlation to the other open source movement that completely reshaped enterprise IT, Linux Operating System. Though both belong to different technical categories, we can model the current platform landscape using Linux ecosystem as a “reference architecture” for the Data Center Operating System or Application Infrastructure Operating System (depending on whether you are taking an IaaS+ approach or PaaS approach to application deployment platform).
Keep in mind that this is a model I am proposing to help users understand how the newer technologies stack up and help them in their organizations. I don’t proclaim this as absolute truth and I am putting this idea out in the wild so that I can get feedback and tweak my model. I strongly urge you to take this apart so that we all end up better informed.
Based on the Composable Enterprise Framework put forward by Jonathan Murray, I have been advocating the Modern Enterprise Model to build an IT platform that meets not just the needs of today’s developers and business users but also future proofs the organization for future innovation. The future proofing is critical not from the point of view of avoiding vendor lock-in but more from the point of view of having flexibility to embrace newer technologies that are coming up in the market at an exponential pace. The key to building such a platform is to embrace a layerered approach to the platform using standards based components. Docker API has emerged as an industry standard to ensure app portability. However, just having a few containers is not solving the IT problem. You need the central nervous system (or the brain) that could handle all these conatiners and, also, offer a seamless operations and developer experience. The modern IT platform goes beyond containers requiring additional layers in the stack. This brings into focus not just the orchestration plane for the containers but also other layers of the stack. The key to future proofing your IT platform is to use standards based components in the platform stack and have them loosely coupled with one another.
This is where the comparison to Linux Operating System becomes relevant. Linux is the operating system for a single server. Google has made a clear case for Data Center as a Computer. If we consider Data Center to be a pooled resource unit tthat acts like a single computer, we need an operating system for the data center. There are many ways to build the datacenter operating system, either using virtual machines or containers. However, containers are fast emerging as the right candidate for application encapsulation because of its efficiency and portability advantages. The operating system for the data center built using containers should take a layered approach and each layer should be loosely coupled with one another. When we build an OS model for data center, IaaS (it could be elastic bare metal service or virtualized environment or cloud infrastructure) becomes the equivalent of hardware in the traditional Linux OS model. Docker could be the equivalent of file system (ext2?) in the traditional OS model. Such comparisons raises the question about the kernel for data center operating system.
The Linux Kernel interfaces with the hardware using device drivers, manages processes, allocates resources and handles security. The kernel for Data Center / Application Infrastructure Operating System requires a similar controlling unit that could interface with the infrastructure (Container host operating system and/or the management plane for elastic infrasrtcuture could become the equivalent to device drivers in Linux OS), Manage Processes (Containers), allocate resources (managing the node/container resources) and handle security. Under such a model, Kubernetes could be the kernel as it is capable of handling infrastructure resources, manage containers and allocate resources efficiently and could handle security in the future. Kubernetes is, thus, an ideal candidate to become the kernel for Data Center / Application Infrastructure Operating System.
The layers that sit on top of Kubernetes in platforms like OpenShift, configuration tools (standard library) developer tools (equivalent to shell), middleware services and ALM tools (other libraries) could complete the distribution of Data Center or Application Infrastructure Operating System. Presence of various platforms built using Docker and Kubernetes could form various distributions similar to Linux distributions. Platform offerings like OpenShift are the equivalent to the polished Linux distros in the traditional Linux world and DIY platforms using Kuberetes could then be equivalent to DIY Linux OS from the past.
There are a few caveats though. First, this is not an oneton one exact mapping with Linux Operating System. Second, even though Kubernetes is emerging as a popular container orchestration engine with the backing of major vendors, it is still not an industry standard like Docker API. There is competition from Apache Mesos and other platform specific orchestration engines. Until a standard emerges in this space, it is pre-mature to call Kubernetes as the kernel But this caveat doesn’t negate the model I am trying to design by using the analogy of Linux Operating System.
I think this comparison to Linux Operating System Model will help IT Managers better understand the newer platform technologies available in the market and, also, help them build a platform that meets not just today’s needs but also prepares them for the future. What do you think of this model? Keeping in mind the fact that it is not an exact mapping, please offer your thoughts so that I can fine tune this model.