Containers aren't just an alternative means of virtualizing applications -- they're also changing the way applications are built, deployed and maintained. Traditional application workloads tend to be monolithic where all of the code, components and services that compose them are developed, deployed and installed together as a single complete package.
Containers are an ideal complement to cloud computing and DevOps environments, where virtual instances must spin up quickly -- often in large quantities -- and then scale down again as computing loads or needs change. Operating system vendors such as Microsoft are quietly recognizing that massive, complex platforms like traditional Windows Servers aren't necessarily the best fit for dedicated container or cloud computing environments, which would benefit from small, lightweight OSes that start or restart faster, use fewer computing resources and require less disruptive patching.
Containers also divide complex applications into constituent components, and then install each component (such as a Web server or database) into a separate container. The containers can be linked together to form the complete application. This is the concept of microservices, where each component can then be updated or patched without affecting other related containers.
A microservices-based application architecture also enables greater functional scalability. When a traditional workload reaches its practical performance limits, an entirely new iteration of the application (and all of its components) would need to be deployed -- along with a complete suite of computing resources. By placing related application components into containers, it becomes a simple matter to spin up more containers that address the bottleneck. For example, if a microservices-based application finds that the Web server container becomes a performance bottleneck, it's easy to deploy additional Web server containers to scale up that functionality. This allows scalability using minimal computing resources.
Microsoft's Nano Server version of Windows Server 2016 addresses these needs. Nano Server focuses on running containers and is reported to be only about 5% the size of a complete OS deployment. It saves computing resources by removing the GUI, 32-bit support, remote desktop support, Microsoft Windows Installer and other ancillary services that remote cloud infrastructures just don't need. Nano Server is managed through PowerShell and Windows Management Instrumentation.
What's the deal with Windows containers?
Is there an alternative to Windows Docker?
How microservices improve availability in cloud
IT pros size up Microsoft microservices