One of the most demanding tasks of a system administrator is managing software assets. Regardless of the size of your organization, you will always have a number of COTS applications, some special ones and some legacy applications that you plan to redo some day but have not yet been able to do. Most sizeable organizations will have a number of different operating systems running in their client machines as well. An application that runs on Windows XP may not work on Vista or Windows 7. There could even be legacy applications that demand only a specific OS.
Every time an application or an OS changes an exercise has to be undertaken to judge compatibility and functioning. Application management is therefore not a trivial exercise in any sizeable organization.
The DLL Jungle
For example, Windows applications rely on DLLs (dynamically linked libraries) for functions such as interchanging information, printing, graphics displays, communication needs etc. These functions are not built into programs, they are simply called when required– hence the name ‘libraries’. Each application installation carries these DLLs in its installation package. Version management of the DLL is often an issue which is why you often get warnings about DLL versions when you install new programs. There could even be situations when different applications require different versions of the same DLL and you need to somehow make them co-exist on a system.
Without getting into excessive detail, it is enough to note that managing application software is not a simple task.
Although application / software virtualization had been introduced several years ago, its use is still developing. Many organizations are still using installer packages and electronic software distribution to distribute their software. While the distribution itself may occur over networks, compatibility issues remain.
How does Virtualization Help?
Application virtualization (AppV) decouples the applications from the operating system. It also transforms application distribution management because when an application has been virtualized once, the virtualization engine will now ensure that it runs on any version of the OS it has been virtualized for. There even are programs available that will take all your installer packages and convert them to run in the AppV environment.
If AppV is used as a software delivery system, then it loads the entire software on the host computer, whereas if it is used as a streaming system then only just that much is first served which will get his application working. If one takes the example of MS Word in a virtualized environment, this would mean just the essential code to open an existing file or open a new file. The remaining code is streamed to the user even as he works. This improves the user experience and reduces the load on the network.
Maintaining a pristine OS
There is a need to maintain a pristine operating system to ensure security and stability. However, if every application you install is going to load its own DLLs and alter the OS parameters, then stability and security both suffer. Application virtualization creates a kind of a surrounding layer around the OS which protects it from any changes the application would make during its installation.
It is important to understand is that a virtualized application is not the application software but with a running instance. Since the application is presented to the OS as a running instance, the application virtualization layer translates the application’s requirements for the OS. The application cannot alter the OS and this helps keep the OS secure and stable.
Running Different Versions of Programs
Application virtualization insulates applications from the OS and from each other; it therefore allows different versions of the same software to run on the same machine with ease. This is possible even if the applications themselves have major conflicts with each other. Take for example the various versions of MS Access. Access 97, XP, 2003 and 2007 have a number of incompatibilities with each other. Yet you can run these programs on the same virtualized environment with ease and even cut and paste data from one to the other. This is because of the application virtualization layer insulating the applications from each other and the underlying OS.
Selecting an Application Virtualization Solution
Any good application virtualization solution must meet a minimum number of requirements. These are listed below:
- Fine grained packaging control
- Application sandboxing
- License management capabilities
- Integration with your active directory
- Windows version independent
- Activation and non-activation support
- Support for streaming delivery
- Support for Software as a Service (SaaS)
Besides making the management of software simpler, application virtualization has other benefits as well. These are:
- Manageability – you can manage your systems from anywhere on your network since the interface is entirely web based.
- All applications are delivered securely. Besides since application virtualization integrates with the active directory, you can continue to implement your software restriction policies and ensure that only authorized users can run specific applications.
- The system is resilient and supports redundancies. This makes your service extremely reliable.
- Since license management is built in, you have complete visibility over who is using what application. Unused licenses can be detected and redeployed or surrendered. This is nearly impossible with traditional applications.
- Since applications can be deployed on any computer in a very short time period, disaster recovery preparedness is greatly improved.
- Applications can be updated with ease with the user even being unaware of the process.
- In case an application gets corrupted or hangs, the user can simply kill the instance and start afresh, no reload is required.
With application virtualization, companies are setting new standards of application and OS stability and get better visibility into their application environment. In the quest for more efficient and simpler computing, application virtualization is an important step.