The operating system upon which a majority of the world’s business applications are managed is transitioning from a monolithic host of massive programs into a minimalistic provider for microservices.
This is from the person responsible for executing this transition for Microsoft: its general manager for Windows Server, Mike Neil.
Whether your CMS, CRM, ERP or any other business applications platform runs in a Windows Server virtual machine or on a Linux system, its underpinnings are in the midst of being swapped out. The entire server world is now an active construction zone.
“From an evolutionary path, it is the direction that we’re going,” Neil said in an interview with CMSWire. “The next stage along that path is really focusing the core pieces of our operating system, for delivery in containers.”
Last week, Neil spearheaded Microsoft’s announcement of a dramatically different technological directionfor the company’s server OS.
In many enterprises, Linux has become the platform of choice for Web servers, as well as for private cloud platforms such as OpenStack. Windows Server remains the platform for many SaaS applications, including the CMS class, but is now typically hosted within a virtualization scheme such as VMware’s vSphere or Citrix XenServer.
For many, Windows Server has become the 2000s or even 1990s technology that data centers must keep alive in order to maintain compatibility for older apps. Server foundation technologies are metamorphosing into new and sometimes unexpected forms, while server-side applications maintain their monolithic (some would say, Paleolithic) shape and function.
The reason server technologies are changing is in order to make workloads portable — to facilitate the cloud. Docker is like a vacuum-seal and shrink-wrap system for virtual machines, “containerizing” them so they can conceivably run anywhere. Late last year, Microsoft committed to enabling Windows Server to become one of those “anywhere” places for Docker containers.
But accomplishing this with Windows Server 2012 R2 the way it is now presumes that this operating system either resides in, or can be invited back in, the foundation layer of data center servers. It isn’t, and will not be.
So Microsoft is creating a Windows Server counterpart to CoreOS, the minimalized Linux specifically designed to run Docker containers.
Nano Server is a minimalized Windows Server, stripped of everything we’d normally associate with Windows, including the windows, except for the facilities to run a program whose only contact with users is through a network.
As Neil explained to us, the next Windows Server (probably with a “2016” at the end, in keeping with tradition) will include a new version of Docker Engine (to be provided by Docker Inc.).
The Engine will continue to produce and manage containerized apps for Windows Server in much the same way it does for Linux today.
“We’re working with Docker to make sure that same API, the same capability to be able to spin up a container, is supported by Windows Server as well,” said Neil.
There are two major differences between Docker in Linux and on Windows Server. With the latter, starting with the next version, Nano Server will enable Windows processes (rather than, say, CoreOS processes) to be containerized under a Windows kernel.
This way, a development team can produce container apps entirely in Windows.
While a plethora of new languages (including Go, Clojure, Node.js, and Scala) are enabling microservices on an unlimited scale, dev teams today remain skilled with C#, Visual Basic (the classic .NET languages), and Java.
If developers are ever to be given the incentive to alter existing monolithic CRM, CMS, and ERP applications for the faster, more scalable, microservices world, they should at least be given the opportunity to use the languages they know today.
Running a Registry in a Stateless Environment
The second major change is the introduction of a second, more Microsoft-specific, class of container, called Hyper-V Containers. And here is my chance to reintroduce the familiar concept of “Microsoft-specific” to our discussion.
Before this discussion becomes too esoteric and abstract, let me take a moment to explain what’s going on here: Microsoft needs a value-add — a technically legitimate reason for presenting a feature that justifies the existence of its product.
So here it is:
Up to now, Windows applications were never designed to be containerized. Each one expects to have the entire processor, or processors, to itself. In a virtual environment, a virtual machine gives the Windows app the illusion of its own dedicated processor, even when the workload is being live-migrated between hosts.
For example, each instance of Windows or Windows Server maintains a huge database called the System Registry, designed to keep track of the state of applications. This design made sense when there was only one OS running these apps. But in a microservices environment, there may be thousands.
And as any multi-user database architect will tell you, keeping track of updates from thousands of simultaneous users is a certain breed of animal whose name typically gets bleeped out of music videos.
A Hyper-V Container may become necessary to facilitate a kind of portability where the Windows application does not “know” that it’s portable — one which relies upon the Registry to help it remember what it’s supposed to be doing.
New applications can be written in such a way as to take advantage of new programming models, and Nano Server would enable these new apps to become portable across instances of Docker, including on Linux. But old Windows applications might not have that luxury. As Neil himself admits, we don’t know for sure yet.
“Some of the challenges we have are, how do we take those types of APIs and be able to virtualize them, and provide them in a containerized environment? That’s the solution we’ve provided: mechanisms to be able to do that.”
As Neil explained further, one of these mechanisms, dubbed “Desired State Configuration” by the company with such a knack for naming abstract mechanisms in abstract ways, will be leveraged to attempt to give some containerized Windows apps the illusion of communicating with a full and complete Registry.
Imagine a clever librarian exchanging a few pages of a book at a time with a reader, in such a way that she never realizes she doesn’t possess the entire book.
It’s the type of technological slicing and dicing that has to be done to enable old applications to run in new containers, at least until these applications evolve themselves.
But the proverbial handwriting on the wall now glows with bright, unavoidable neon: The cloud is transporting server applications into a new world, and the platforms for operating in that world can only support the remnants of the old world for so long.