A wise old IT dude once told me that everything moves in cycles when it comes to technology. I grew up at the end of the mainframe era, but like most people I enthusiastically welcomed the personal computer era where the power of computing moved from the back office into the hands of end-users. Of course this shift in the landscape led to its own series of difficulties -- deploying, managing, and securing desktop and laptop computers is certainly a lot more challenging than doing this with dumb terminals that connect to mainframes!
So being involved in system administration, I was happy to see the landscape shift again with the introduction of Terminal Services in Windows Server 2003. Suddenly, you could use a Windows Server system as a kind of micro-mainframe for your business. This technology, called session virtualization, enabled users of Windows XP on their PCs to run Windows desktop sessions with their applications so that they execute on a remote server but accept input and display output on the user's PC. Terminal services continued to evolve and were re-branded as Remote Desktop Services (RDS) with the release of Windows Server 2008 R2.
At that point it's like the floodgates were suddenly opened. RemoteApp was introduced to allow a user to run an individual remote application on a backend RDS server and display it in a window on the client like a local Windows desktop application. Then App-V was introduced to enable new scenarios where remote applications needed to maintain local resources on the client instead of storing and utilizing resources only on the RDS server.
Then Azure RemoteApp was introduced to enable the RemoteApp experience for organizations that wanted to run their RDS backend in the cloud instead of their datacenter. And now just recently Microsoft announced that Azure RemoteApp will be replaced with a joint solution implemented with Citrix XenApp "express" technologies. On top of all this comes Windows Containers, a technology that some tout as the next evolutionary step in remote application delivery.
What's a slow-thinking muddle-headed IT professional like myself to make of all this? For example, let's say that my company's infrastructure is still running Windows Server 2008 R2. We're currently using RemoteApp (or one of its Citrix equivalents) for delivering remote applications to our users. We're likely going to migrate our backend to Windows Server 2016 in some hybrid fashion in the next year or two. And we also need to enhance our remote application delivery model to enhance the agility of our business. Should we switch to App-V? Or should we consider moving to Windows Containers?
App-V: Benefits and considerations
App-V (which stands for Microsoft Application Virtualization) is a mature technology that allows administrators to package locally installed applications into centrally managed services. Application packages can then be streamed to remote users without the need of making any configuration changes to their computers. App-V can provide a number of benefits for your organization including simplifying application deployment and reducing your application management and support costs. App-V even lets you run multiple versions of applications on the same PC even when those applications would conflict if they were installed locally. If you'd like to learn more about App-V, a good place to start is the on App-V basics by Wilco van Bragt.
There are some important things to consider, however, if you're thinking of implementing App-V in your environment. For one thing, App-V streams complete application binaries to users' computers instead of transmitting only keystrokes (input) and display data (output) using Remote Desktop Protocol (RDP) the way RemoteApp does. App-V also requires a separate backend technology (App-V Server) on top of your existing Windows Server infrastructure, though you can combine App-V together with RDS to support some additional scenarios.
And while Microsoft continues to improve and support App-V (currently version 5.1) the pace of these improvements might best be described as incremental. What I mean is that there's also a downside to being a mature technology. On the one hand, a technology like App-V that's mature means it can be trusted to work pretty much always, sort of like pushing in the key fob of your reliable old gas-guzzling Audi in the morning and expecting to be able to drive the car to work. But the other side of the coin is that mature technologies don't make much money for their manufacturers. As a result those manufacturers are always on the lookout for something new they can sell you, like a Tesla.
Windows Containers: Benefits and considerations
In contrast to App-V, which is a mature technology, Windows Containers is an emerging technology that Microsoft has been developing as part of Windows Server 2016, the latest release of the Windows Server operating system. While Windows Containers itself is new, the underlying idea of containers that it's based upon has been around for a few years. Containers were originally developed for the Linux platform as self-contained execution environments that act somewhat like virtual machines but consume far less CPU, memory, and storage resources than virtual machines do. The prime mover for the container revolution is the company called Docker, which bills itself quite rightly as the world's leading software containerization platform. Docker containers let you wrap up application code, runtime, libraries, and file system into a single package (container) you can deploy easily and run on top of almost any infrastructure. Windows Containers is Microsoft's new effort to embrace (and probably extend) Docker containers for deploying on both Windows Server and Microsoft Azure. If you want to learn more about Windows Containers you might start by reading up on this topic at VirtualizationAdmin.com.
The biggest benefit of Windows Containers is that it enables businesses that have Microsoft-centric infrastructures to leverage the same benefits that Docker containers have brought to many organizations. These benefits include faster and easier deployment, greater application portability, more efficient use of resources, and support for a broad range of development platforms. The biggest downside for Windows Server administrators is basically twofold. First, there's the paradigm shift involved. Docker and containers are basically part of the open-source world, and if you're going to implement Windows Containers you should have a good understanding of open-source technologies and development platforms. Even though Microsoft promises you'll be able to use PowerShell to deploy and manage Windows Containers, you need to think more like an open-source zealot if you're going to get the maximum benefit out of using this technology.
The second downside of Windows Containers is that it's not yet mature. I actually think that the reason Windows Server 2016 has taken so long to get out the door is because Microsoft has been grappling with a whole plethora of decisions on how to implement container technologies in the new operating system. I suspect also that even once Windows Server 2016 is in widespread use, its implementation of container technologies will continue to be tweaked and evolve in response to feedback from early adopters.
Key questions for decision-making
Where does this leave organizations looking to upgrade their application-delivery model? Should a company currently running Windows Server 2008 R2 consider App-V as a safe path going forward, or should they roll the dice and go with Windows Containers? Asking yourself a couple of questions might help you decide.
For example, will you be focusing mainly on end-user delivery of legacy Windows desktop applications or on deploying back-end server applications? App-V is useful for the former but not the latter, although there is a sister solution that's part of System Center Virtual Machine Manager that may fit the bill for some organizations. On the other hand, if you're looking mainly at improving the software solution for your supply chain, then container technology such as the Docker Engine may be the way to go because it can enable you to re-architect your supply-chain infrastructure and bring it into the 21st century.
Is agility a key priority for your business? An established business that grows incrementally might not want to take the risk of implementing an emerging technology like Windows Containers. On the other hand, if you're poised for rapid growth and can embrace risk, you might want to look deeper into Windows Containers as a way of accelerating the expansion of your business. Remember, agile businesses are usually risk-takers, and taking risks typically results in one of two outcomes: success or failure.
Photo credit: FreeRange Stock, Microsoft