Synopsis: Are your applications causing server failure? Prevent crashes by virtualizing your applications and/or by using containers.
Your IT desktop/application group is testing a new application running under Citrix XenApp (formerly known as Citrix Presentation Server) and suddenly, everything on the server come to a halt. What do they do now? To solve the problem, they can spend the time and money to run the application on a separate server by itself within XenApp. Or, they can virtualize.
There are a number of reasons why applications can cause your server to fail. One common reason an application fails in a XenApp environment is that when the application is installed, unbeknownst to the administrator, a shared library (DLL) that another application is relying on is overwritten. Less often, the application runs rampant in shared memory trampling other application's memory space. Creating a virtualization bubble around these application environments will resolve these conflicts.
There are a couple of virtualization options, depending on what you are already using or are thinking about using in your data center. If you happen to have XenApp Platinum or Enterprise Edition, your solution is easy. You can configure your problem application to run virtualized within XenApp. The latest release of XenApp has application virtualization bundled in.
What application virtualization does is create an isolation "bubble" around the application so that the applications can't conflict with one another. How deep the bubble goes depends on the solution vendor's implementation of application virtualization. This is important because some application virtualization solutions only virtualize to the disk level. This will solve shared library conflicts, but not memory conflicts, and makes standard OS and application interaction with the application easier. Other solutions completely encapsulate the application in its own bubble which solves both the memory and shared library conflicts, but makes OS and application interaction more difficult.
There are other vendors who provide application virtualization. Some examples include Symantec Altiris Software Virtualization Solution, Microsoft Application Virtualization (formerly known as SoftGrid), and VMware's recent product family addition Thinstall. Application virtualization solutions that interoperate with XenApp include AppSense and Scense.
Application virtualization and XenApp
Here is how application virtualization can work within XenApp. First, you package your application within the virtual environment. Then you deploy the package to a XenApp server. XenApp Platinum Edition supports application streaming, so the virtualized application can stream to the XenApp server, utilizing one image of the application for all user access. Accessing the application will remain the same from the user's standpoint. In fact, the user won't know whether the application is running native on the XenApp server, or virtualized. When the user accesses the application, it executes within the virtualized bubble within that user's XenApp session.
Another option to consider if your company has implemented a server virtualization is to isolate the badly behaved application by deploying XenApp on multiple virtual machines or containers on one physical server. This option is not as efficient as application virtualization because the entire operating system stack from kernel to user area is virtualized rather than just the application running within the user area. However, because the kernel is virtualized, so is the memory, and therefore this option will absolutely solve memory crasher conflicts.
Virtualizing with containers
Let's say that an IT manager who has a badly behaved application uses Virtuozzo to solve his problem. Every time a user runs an application, a Virtuozzo container is created to run the application. Unlike virtual machines managed by a hypervisor, containers isolate at the operating system layer, creating multiple isolated runtime environment instances of a single operating system with virtualized, shared, systems resources and base kernel. Using multiple virtual machines to isolate badly behaved applications is not as cost-effective as using application virtualization solutions, but it is significantly less expensive than deploying an entire physical server to isolate the application.
As an IT director or administrator, having multiple virtual tools in your IT toolbox can allow you to address issues with application conflicts quickly, rather than having it take weeks. Application virtualization solutions and server virtualization solutions can be deployed together or separately to tame even the most badly behaved applications.
About the Author: Anne Skamarock, Research Director at Focus Consulting, has been involved with computers and associated technology for nearly 30 years. She started her career as a software engineer developing custom scientific codes and as a UNIX systems administrator. For the past seven years, Anne has worked as a market analyst focusing on the convergence points around systems, storage, and software.