The provisioning of computing services to groups of people is a complex problem with a variety of solutions. One conventional solution is to install a particular set of applications at a personal computer (PC) of each person in the group. However, this can become unmanageable even for relatively small groups as, for example, particular specialists start demanding different application sets, and/or maintenance tasks such as security updates, bug fix patches, operating system service packs, and the like, begin to mount up.
A thin client approach to the problem can provide some relief. A relatively simple (i.e., thin) client program may be installed at each PC that provides user input to one or more central servers where the applications largely reside and execute (i.e., to one or more application servers). The servers may maintain a corresponding terminal session for each client connection, provide the user input to one or more applications of choice, and return the results (e.g., an updated graphical user interface or data corresponding thereto) back to the user. The thin client approach can ease management and maintenance burdens, but it has its own problems as well.
In particular, many applications are designed to operate under the initial scenario (i.e., the full install at PC scenario), and include behavior that can cause problems in other execution environments, for example, when multiple application instances execute simultaneously at one of the central servers. Such problems can range from outright failure to execute more than one application instance (e.g., because of a global name space conflict) to more subtle security issues such as unintended information leakage through the shared execution environment. To avoid often costly application redesign, such problems are commonly addressed with some level of isolating virtualization at the server.
There are numerous varieties of virtualization, however, for the purposes of this description, it will be sufficient to highlight two types, namely: operating system virtualization and application virtualization. Under operating system virtualization, multiple operating system instances may be maintained at a single hardware server. Under application virtualization, relatively fine-grained aspects of a single operating system instance may be replicated with lightweight copy-on-write techniques. Not only is application virtualization typically much more resource efficient than operating system virtualization, but operating system virtualization can reintroduce management and maintenance burdens that the thin client architecture is designed to ease in the first place. However, robust, high performance application virtualization typically requires a substantial modeling process for each application that, in effect, audits the application's impact on the host operating system. Even larger organizations can lack the time and/or resources to perform such application modeling and may be therefore denied the benefits of application virtualization and full benefits of the thin client architecture.