In the past few years, client and server management have changed dramatically. In the "old
days," file servers housed installation software, and administrators installed applications
manually or used logon scripts to deploy them. Now, Active Directory (AD) and Group Policy let you more easily assign and publish applications to computers, and Microsoft Systems Management Server (SMS) provides an even better solution, with more granular and sophisticated
software deployment and progress reports.
Although these technologies help deploy software, application compatibility and manageability
concerns remain. (For example, how do you patch an application? Will the application work if
another application is installed? Is the application compatible with Vista?) Whenever you install an
application, components are registered to the machine; executable files, DLLs, and other files are
copied to the file system; and information is written to the registry. When you upgrade or uninstall
an application, information is left behind. Over time, computers become polluted with leftover files,
registry information, and registered components that can cause compatibility problems.
Virtualization has also improved recently. Traditionally, OS virtualization has been useful for two
key scenarios: consolidation and testing. In the past, each major application ran on its own server,
which was expensive from both a hardware and a licensing perspective. Now, virtualization lets
you run multiple "sandboxed" OSs on one physical server. Application compatibility problems don't
occur because although several applications are running on a server, each application is running
on a virtual OS, with its own hard disk, registry, processor, and memory resources. For testing,
virtualization lets you run multiple OSs (e.g., Windows XP, Windows 2000 Server, Windows 95,
and Vista) all on the same system, as well as run multiple test environments concurrently.
Running applications in a virtual OS sounds like it would solve any application compatibility
problems—which might work for one application, but what about ten? You need to consider the
overhead, memory usage, and disk space required. In addition, you must manage, patch, and
protect each OS instance. And although applications are sandboxed in the OS, the OS's entire
environment is also sandboxed, which makes it difficult to save documents or data created in the
application to the host computer's local file system.
The best solution is to virtualize applications, which lets each application run locally on the
computer. This solution is different from terminal server–style application publication (also known
as server-based computing), in which applications run on the terminal server, with output sent to
users' computers. In server-based computing, single points of failure occur because applications
reside on the terminal server. In addition, resources are wasted because the workload occurs on
the terminal server, while users' computers sit idle. Also, users who are working offline can't run
any applications that are hosted on a terminal server.
Application virtualization prevents these problems. A virtualized application runs on the user's
machine like a regular application, but in a sandbox environment that prevents installation to the
local OS. Microsoft's SoftGrid is an application virtualization solution.
End of Article