Yesterday, Microsoft announced that Windows Server v.Next will include a “Nano Server” installation option. Nano is described as an incredibly small refactoring of Windows Server – think “Server Core Core” – that has a base OS image size measured in megabytes, and is about 8% the size of a “full” Server install.
So what’s this mean to you?
Well, first of all, let me get this off my chest: I told you so. I’ve been saying since 2008 that “Server Core” was just a peek at things to come, and that Microsoft would eventually ship a version of Windows where “windows” weren’t even possible. By all reports, Nano won’t even support video hardware – meaning OEMs can simply eliminate that hardware from physical boxes.
Initially, Nano is going to be suitable for a limited set of workloads – just like the original Server Core was in Win2008. A leaked slide deck says Nano will come with “Core CLR,” likely a stripped-down version of .NET that doesn’t have dependencies beyond what Nano provides. A companion “Core PowerShell” will run on it. That probably means workloads like SQL Server and SharePoint aren’t going to be suitable out of the box – in this version. As with Server Core, Nano will doubtless evolve.
Many folks will take the limited workload variety as an excuse to ignore Nano, just as they did with Server Core. Those people are short-sighted and career-limiting, and will eventually go away of their own accord. From everything I’m seeing, Nano is the future; “full” Server is there for backward compatibility until Nano catches up.
So what will Nano eventually support? Clearly, Hyper-V and IIS, making it an ideal cloud-scale host OS. After all, if all it needs to do is run VMs, then you ideally want it as little as possible, and Nano seems to deliver on that. Microsoft indicated that they’re developing web-based tools to replace certain in-box tooling that exists today – to me, that probably means a web-based “Task Manager” and other interfaces, which is why I think Nano will probably support at least a limited version of IIS as a workload.
Nano is also going to support WMI
OMI (Open Management Interface) and PowerShell Remoting, so that’s how you’ll get to it. You won’t be logging in locally, since it doesn’t support that. Heh. Told ya they’d do that eventually.
Based on past experience with Server Core, I wouldn’t be shocked if Nano ships with support for what I call ‘core infrastructure’ workloads: Active Directory, DHCP, DNS, and the like, although there’s been no mention of them yet. Those roles were amongst the first refactored for Server Core back in 2008, and so they’re likely low-hanging fruit for a Nano conversion. None of them have heavy native .NET dependencies, all have their own management protocols, and all run entirely as background services with remote tools for management. And that means your “Nano-based infrastructure servers” can take up a ton less space, get rebooted a ton less often, and take a ton fewer patches each year. Win.
The phrasing in Microsoft’s announcement also suggests that Visual Studio will “know the difference” between “full” server and Nano. I suspect developers will be able to tell Visual Studio which one they’re targeting, and then have it highlight anything they try that won’t be supported on the target. That’ll make it a lot simpler for developers to produce code that definitely runs. Visual Studio will also, I imagine, come with the “packaging” needed to produce containerized applications.
Oh, speaking of containers: Nano is also tied up with Microsoft’s vaguely announced support for “containers.” I say “vague” only because the technical details are slim at this point (unsurprising), but what’s interesting is that Microsoft plans to support Docker’s APIs for managing Windows Server and Hyper-V containers.
Now, understand that half the tech press is getting really confused about what this means. A container is, at a conceptual level, what App-V does. It’s a way of isolating specially packages applications from each other, without the need to construct an entire set of pretend hardware, and a whole OS, around it. So it’s “virtualization light.” Docker isn’t containers; Docker is a management API on top of native Linux containers that have been around forever. So with this announcement, it would seem you can have a super-slim Nano Server OS capable of running VMs and containers, and manage those containers via the same Docker tools you use to manage Linux-based containers.
What Microsoft has done to make this harder to grasp is differentiated between Windows Server containers (no virtualization) and Hyper-V containers (some level of virtualization). Hyper-V containers seem to be a middle ground between full VMs and no-VM-at-all-containers, creating a more inseparable barrier between applications. Microsoft says an app packaged for Windows containers can be deployed in a Hyper-V container, although the specific use cases for one way or the other aren’t yet clear. Hyper-V has, for a few cycles now, been on a path to lessen the overhead of virtualization. For example, the shift to “synthetic” hardware inside a VM, versus traditional “emulated” or “virtual” hardware, was always intended to reduce the overhead of the VM itself. It’s possible that Hyper-V containers are some further-lightened kind of VM-flavored thing, manageable via container-management APIs.
Hopefully that’ll all be made clearer at Ignite and BUILD.
What’s definitely clear right now is that this is a big new world in Windows. I’m going to continue watching this space and writing about it in an attempt to keep you updated and informed. The take-away now is, don’t ignore this. While the technologies are built for cloud-scale environments, and while your company might not have any immediate plans, this is what the world looks like going forward. Nano will become the only version of Windows Server, and you will need to learn to manage it appropriately. Microsoft has been marching forward with this plan for almost 8 years now, and while full Nano-ization might take another decade, it’ll happen. Keep up.