Linux and Microsoft Windows are the operating systems of choice in most datacentres and cloud infrastructures, with the former usually favoured by web-scale startups, while the enterprise tends to use the latter to run their workloads.
However, some recent trends have forced Linux suppliers to revisit their architecture. The two popular Linux distributions – Red Hat Enterprise Linux and Ubuntu – have undergone enormous transformations to become lightweight operating systems optimised to run web-scale workloads.
And Microsoft appears to have followed suit by building a stripped down version of Windows Server called Nano Server, news of which emerged at the start of March 2015, when a leaked slide deck from a Microsoft presentation appeared online.
This billed it as a headless deployment option for Windows Server, as well as the “nucleus of next-gen cloud infrastructure and applications”.
The document suggested it could make its debut when the 2016 release of Windows Server drops, while members of the Microsoft Technology Adopters programme look set to get their hands on it during the first half of 2015.
Read more about Windows Server
- In recent months, Gartner has seen an increasing volume of inquiries around continuing to use systems that run on Microsoft Windows Server 2003, which will be unsupported after 14 July 2015.
- Menzies Aviation, the airport passenger and cargo handling business, has become one of the first UK companies to install and use Microsoft Windows Server 2012 and Hyper-V 3.0 in production.
Why now with Nano Server?
If the reports about Nano Server’s existence prove true it’s not difficult to figure out why Microsoft has decided to introduce it – and that’s because Windows Server remains a bulky OS to run web-scale applications.
When compared to Linux virtual machines (VM), Windows Server-based ones take longer to boot.
As traffic increases, administrators will want to launch additional VMs with shorter boot times, but Windows Server isn’t the best operating system (OS) for elastic workloads.
It also undergoes frequent reboots, usually in response to a new software patch or security update, which has a knock-on effect on the uptime of applications.
With the addition of components and services that are not core to the applications, Windows’ footprint has increased over time, bringing with it a larger attack surface for malware and viruses.
Furthermore, the large VM image size hogs network bandwidth during provisioning, which should go some way to further explaining why Microsoft is looking to introduce a pared-back version of Windows server.
CoreOS, a fork of Chrome OS, started the phenomenon of leaner operating systems and was created to run containerised applications with minimal dependencies on software they’re designed to run on.
It supports transactional updates that make it easy to roll back changes after each upgrade or a patch.
Running CoreOS on bare metal also delivers better performance than running it in VMs, and with applications moving to containers, CoreOS and Docker have become a hit with cloud providers.
For example, the likes of Rackspace and Joyent have built new offerings based on this technology.
Red Hat has started Project Atomic with the intention of turning Red Hat Enterprise Linux, CentOS, and Fedora into lightweight operating systems.
Just last week, it made Red Hat Enterprise Linux 7 Atomic Host beta available for downloads. The company claims the new OS is more secure, easily manageable and optimised to run containers.
Canonical has also announced a stripped-down version of Ubuntu called Snappy Ubuntu Core. Highly inspired by the Ubuntu Mobile OS, Snappy is lightweight and secure. It supports atomic updates to the operating systems, frameworks and applications.
Snappy becomes available not just on cloud and hypervisors but also on internet of things (IoT) platforms such as the Raspberry Pi 2 and BeagleBone.
But what’s all this got to do with Microsoft’s Nano Server? Well, it heavily borrows design ideas from CoreOS, RHEL Atomic Host and Snappy.
It supports headless deployment options that make provisioning and managing large clusters easy, and is designed to run cloud-native applications that require elasticity.
It ships with the baseline version of .NET called CoreCLR, which Microsoft recently made open source. The OS does not contain the binaries or metadata that typically increase the footprint and developers are expected to package applications along with dependencies in a single unit of deployment.
Core PowerShell, a minimalistic version of PowerShell refactored to run on CoreCLR, provides Remote management capabilities and Nano Server can be installed on physical hardware or virtualised infrastructure.
When Windows Server starts supporting Docker, Nano Server stands to become the become the preferred OS to run containers.
The rise of microservices
The other important aspect that is influencing Microsoft is the evolution of microservices. Slowly but surely, developers are moving towards building applications composed of modular, autonomous, lightweight, self-contained components.
Docker and containers enable developers to build microservices. Platform-as-a-Service (PaaS) suppliers such as Red Hat and Pivotal have embraced the technology, encouraging developers to use their platform to run them too.
Though Microsoft has been investing more in infrastructure as a service (IaaS) and analytics, it is revamping the original Azure PaaS layer to support emerging trends such as microservices and containers.
The launch of ASP.NET 5.0 is a move in that direction.
With .NET becoming open source, it will run on multiple distributions of Linux. There will be Docker images for CoreCLR and ASP.NET that developers will deploy on Linux. Without substantial support for a lightweight Windows Server to run containers, Linux may eventually become the best server OS to run containerized .NET applications.
With Nano Server, Microsoft stands a fighting chance of keeping Windows relevant in the era of containers and microservices.
Docker, integrating with microsoft containers
Using Windows containers for disaster recovery