Many layers of virtualization are currently at work, and one of them is application virtualization.
Application virtualization is software technology that implements the encapsulation of an application so that it can be isolated from its host OS. The resulting isolation gives rise to operating system independence, the first benefit that can be cited for application virtualization.
Encapsulation is the basic factor that enables an application to run in an artificial, or “virtual”, environment.
There are different ways of implementing a virtualized application, and one that is 100% virtualized is not installed the way users of Windows, Linux and Mac applications know it; the approach is entirely different, but its execution appears to be the same on the surface. To the untrained eye, the runtime behavior of a virtualized application appears to be similar to that of a traditional one — intercommunicating directly with the base OS — but in reality, it is not, because the application can be decoupled from the OS in various degrees.
Two kinds of application virtualization exist: client-side application virtualization and server-side application virtualization.
Client-side application virtualization isolates an application from other applications and from its operating system. When the base OS is updated, application virtualization enables an application that was developed on the old version to continue working on the new one. In a Windows environment, this situation would trigger an error caused by mismatch of software library versions, but not so in a virtual environment. Application isolation is the second benefit of application virtualization.
Server-side application virtualization offers benefits similar to those found in client-side virtualization, but there are more. The former allows multiple instances of an application to be executed automatically on other machines when service-level benchmarks can no longer be met by current the workload — an action that translates to performance speed boost. Server-side virtualization also enables restarting of applications in another server when a failure occurs in one server; the result is enhanced availability, the third benefit can be mentioned for application virtualization.
Application virtualization offers two more advantages aside from those already pointed out, and these are: better performance scalability and cost reduction.
The key to performance boost in server-based application virtualization is the presence of a workload management function, which allows one application to start automatically on multiple systems when the need arises. Built-in workload management also allows more people to access a single application simultaneously.
Cost reduction is achieved through more efficient copying or streaming of encapsulated applications to remote systems. With application virtualization, one can avoid additional costs for provisioning, installing, updating, and administering applications, which would be incurred in non-virtualized environments every time more users need to be supported in order to use the application simultaneously.
Application virtualization has its downsides, too. Here are three examples. First, the possibility exists that the application vendor might withhold support when told that their product is run in a virtual environment. Second, unforeseen problems could occur, specially with Windows applications not designed to run in a virtual environment. Third, applications that install their own system drivers might cause the virtual environment to produce unexpected results.
Weighing the benefits and disadvantages of application virtualization with the help of expert IT professionals can help arrive at a sound decision to use the technology in one’s business.
– Founder of Key4ce & FuseCP.
– More then 13 years of experience with Windows high availability and Microsoft Exchange.
– More then 13 years of experience with Linux and Unix.
– Open source enthusiast and a large contributor for multiple large Open Source projects.
My current main focus of attention is Geo-Clustering.