Chris Mills is the CTO EMEA of Pivotal, which offers solutions that intersect cloud, big data and agile development. Here Chris discusses the long road from process isolation to Dockers, and why Microsoft’s recent announcements may change the enterprise landscape in the next twelve months…
Containers have become somewhat of a buzz word of late. Yet, whilst this hot new technology isn’t actually that new, it does have some interesting new capabilities, some of which allow us to open doors that were once considered well and truly locked and bolted. One of those is the open sourcing of .NET and the active contributions from Microsoft to support the Docker community.
The concept of process isolation has been around since the late 1970s, when Unix V7 was released with the system command chroot. This paved the way for a whole load of different technological advancements covering all variations and flavors of Unix and Linux. These included technologies like Solaris Zones, Control Groups (cgroups), AIX partitions, LXC and more recently Warden, LMCTFY, Docker and Rocket.
Microsoft has been notably missing from the list of companies and technologies for [obvious] reasons. Of course there have been offerings from third parties such as VMware’s ThinApp as well as Citrix’s XenApp amongst other products. Microsoft also has its own capabilities, having acquired Softricity in 2006 and the subsequent release of the App-V product line, allowing containerisation and streaming of applications. App-V, ThinApp and XenApp cover some of the same functional capabilities, although they were designed to compete in a different space. In some cases they lack simplicity and speed and are not as portable as container technologies such as Docker.
With the recent announcement by Microsoft to add support for Docker containers natively on Windows, they will provide the ability to build and run Docker images utilising a shared Windows kernel (and other resources). However, it won’t allow you to use your existing Linux images on top of a Windows OS – this isn’t virtualisation – it’s containerisation with a shared foundation. However this is a step in the right direction, providing Microsoft the ability to tick off another item that used to be closed source and exclusive to Linux.
This will give Microsoft developers and system admins the ability to build, deploy, share and maintain Docker images; bringing them up to the Linux par – but it also provides more options. Today, Micro Service based architectures are all the rage, with apps made up of an ever-increasing number of discrete services. Cloud Foundry, the Platform as a Service (PaaS) offering from Pivotal, supports app deployment across multiple languages, such as Java, Node or PHP to name a few. This provides developers with the choice of the most appropriate language for the task at hand. With the added support of Docker by Microsoft, we now have the ability to run our apps on the most appropriate kernel too, giving app developers and operation staff more flexibility.
Add into the mix what I consider to be Microsoft’s biggest announcement of 2014 – the open sourcing of the .NET programming language – and things start to get very interesting. Microsoft has joined up with the Mono team and opened up the whole of .NET to the world. It has publicly committed to supporting the .NET CLR applications running on top of Linux systems as well.
Ultimate flexibility provides a developer with the option to write their application in any language and deploy to a runtime environment that suits their needs. This could be a combination of running a Java application on top of a Windows system or a C#.NET application running on top of Linux.
Even more important is the tearing down of the final few arguments to adopting Java over .NET. Most organisations I’ve encountered over the years have been specialised as a .NET or Java shop; some switch, but they hardly ever use both.
The reason for this has typically been the underlying platform: people have traditionally selected Microsoft if they only use Windows-based systems, whilst others went for Java, if they wanted to run on multiple operating systems (and perhaps if they wanted scale).
But PaaS is becoming more prevalent, and we’re seeing the co-adoption of Micro-Service-based architectures, which recommends the building and running of isolated services in the most suitable language programming language. As a result, the days of specialisation are coming to an end. From a personal point of view, being able to take advantage of Microsoft’s development environment alone makes this a very attractive offering. It’s always been a leader in tools and utilities for developers.
With these last bastions disappearing, will we see Java knocked off its pedestal as the enterprise language of choice this year? Microsoft has certainly opened itself up to play in the enterprise space with its support of Docker, the open sourcing of .NET and its continual open support of Linux – so we’ll be watching with interest.