In the recent years, lots of hype was generated by Application Virtualization products/solutions.
This kind of technology permits to create an isolated environment where an installed program can run.
The isolation is useful when you need to run several versions of the same product on a PC and the product doesn’t allow the coexistence of more than one version installed.
An example can be the SAP Gui because I had several experiences of customers needing to use different versions of this product due to various SAP applications requirements.
As a Microsoft consultant, I use Microsoft Application Virtualization (App-V) but other products exist that offer similar capabilities.
You can read here a comparison of Microsoft, Citrix and VMware Application Virtualization Technologies: http://searchvirtualdesktop.techtarget.com/feature/Application-virtualization-comparison-XenApp-vs-ThinApp-vs-App-V
Due the fact that several customers don’t know very well these kind of products, I would like to underline the limitations of this type of Technologies:
- If a product doesn’t work on a given operating system (for example Windows 7) create a virtualized application doesn’t help. The minimum requirement for a product to be virtualized is that it’s installable and that it works on the target operating system.
- You may have vendor support issues If you experience problems with a virtualized application and these problems are not repeatable on the same operating system but with the application installed insted than virtualized.
- Several applications are not virtualizeble due to technology limitations (for example App-V cannot virtualize drivers or web applications) or vendor legal boundaries. (for example you can create an Internet Explorer 6 virtualized application and run it on Windows 8 but Microsoft doesn’t permit to virtualize Internet Explorer so you risk to face a lawsuit)
So how can I know how many of my applications are virtualizable?
The answer is that you need to know your applications (the application install drivers? Is it a web application? it works on the target operating system if I install it? Uses databases? Requests data or interact with other applications? The vendor permits to virtualize the application?) and also you must know in deep the limitations of the Application Virtualization technology.
IMHO the applicability of this kind of technology if very small and it makes sense in the following scenarios:
- Same application but different versions coexistence (example: two different SAP Gui on the same PC)
- VDI pooled environment
Let me explain the “VDI pooled environment” case:
A VDI pool is a number of virtual machines that are created from a Golden image. Normally, when a user perform a logon, a new virtual machine is cloned/created by the Golden image. At the user logoff, the virtual machine is cleaned so every programs that the user installed are not kept.
If you have two type of users that need different applications (for example Group 1 that need App 1 and Group 2 that need App 2), you have the choice to install both App1 and 2 into the Golden image (but you must prevent Group 2 to run App1 and vice-versa) or you must provide at runtime the correct app for the correct user every time they perform a logon.
In this context, a virtualized application can be helpful because doesn’t need a real installation but the app will be ready as soon as the virtualized app will be copied into the VDI machine.
So the user performs a login, receives a generic VDI machine, asks for the app that he needs to use and just waits the time that the process needs to copy the application virtualization package inside the VDI.