OK, so something is either real or virtual, right? But behind the contradiction implied by this title, is a serious question. What exactly is virtualization?
Not only are virtualization technologies becoming more and more prevalent in all kinds of organizations, from small businesses through to global enterprises, but the term "virtualization" is also being used more and more, and sometimes to describe things that may not be virtualization as this term has commonly been understood. For example Microsoft, and other vendors, has applied the "virtualization" brush to a range of technologies, not all of which are really virtual! Or have they …
One definition of virtualization is: The capability to run an application or a computer in a virtual environment without affecting the components that already exist on that particular desktop or server.
This definition mostly works for desktop virtualization technologies, such as Virtual PC 2007 and Windows Virtual PC on Windows 7, VMware Workstation, and server virtualization technologies such as Microsoft Hyper-V and VMware Server, that enable several operating systems to co-exist on the same physical hardware, and in protected "bubbles" so that one OS does not affect any others.
However, as we shall see when we go through some of Microsoft's current "virtualization" technologies, the above definition doesn't always fully explain things.
Server virtualization is probably the least ambiguous technology area for Microsoft. Server virtualization enables multiple servers, such as domain controllers, DNS servers, and Web servers, to run as discrete virtual machines on the same physical computer host. Server virtualization enables the physical consolidation of multiple traditional servers to improve and maximize hardware utilization, and to consolidate workloads onto fewer enterprise class servers. Server virtualization is also about reducing costs, by using fewer physical computes, with reduced electrical costs for cooling and server power consumption.
But what about desktop virtualization? Desktop virtualization enables software applications, operating system, and hardware configuration to be packaged to run in a self-contained, virtual environment, enabling users to run multiple operating systems and applications on a single computer. With desktop virtualization technologies, such as Microsoft Virtual PC 2007 SP1 and Windows Virtual PC, including Windows 7's XP Mode, the virtual machine files are installed and executed on the local client desktop computer. In enterprise environments, desktop virtualization can be augmented with technologies such as MED-V that are used to deliver and manage client virtual machines over the network from central servers.
Isn't this clear and unambiguous? Yes, if you just include "traditional" definitions of desktop virtualization, but what about approaches such as using Microsoft's Remote Desktop Services (RDS) to deliver desktops and applications hosted on central servers, but presented on user's desktops as if they were running locally? This approach de-couples the user desktop from their physical workstation, but importantly there are not separate virtual machines on the server; rather every user is running a session on the server, and any applications they run must be compatible with the server OS. This approach is sometimes called presentation or session virtualization. And where shortcuts to remote applications are provided on user's desktops, this approach is sometimes also referred to as a type of application virtualization.
And then there is the whole area of Virtual Desktop Infrastructure (VDI) …. VDI is an alternative server-based desktop virtualization method that uses virtualization technologies enable users to run their own client desktops, but hosted on a central server. In Microsoft's VDI, multiple client operating systems run in virtual machines on a Hyper-V server; the server then remotely presents each desktop to the client computer, over RDS. By using virtual machines running on the server, every user can run their own desktop OS version (and not be limited to a server OS), and customize their own unique desktop settings.
So, there's more to virtualization than virtual machines; we've also got session-based virtualization and, perhaps most importantly, there's also the concept of de-coupling, where elements such as hardware, OS, applications, and user state and data, that in a traditional rich desktop environment would be all packaged together, are now potentially in their own separate spaces.
Does considering virtualization to be of different types help with some of the other "virtualization" technologies?
Let's consider user state virtualization. The term user state virtualization describes the ability to separate user data and settings from applications and operating systems, so that users can access their own personalized environment, no matter which device they are currently using. So, in this case, it is the de-coupling element of virtualization that is key – we are not talking about multiple concurrent user states here, and there are no virtual machines involved. Instead there's the ability to separate user state data from the applications and operating system so that users can move from environment to environment, or device to device, and automatically pick up their saved data, favorites, application settings and so on no matter where they are. In Windows environments, user state virtualization technologies include Folder Redirection, Offline Files, and Roaming User Profiles.
How about application virtualization? As a generic term application virtualization describes technologies that deliver applications across the network to end-users, without the need to install these applications on the user's desktop. There are two key methods for virtualizing applications; through specific application virtualization tools and through presentation virtualization.
Application virtualization tools typically package a software application so that it runs in a self-contained, virtual environment. This virtual environment contains all the information required to run the application on the client computer, without installing the software application locally. So, again the decoupling element of virtualization is important, as the application is not "installed" on the host operating system. In typical implementations, such as Microsoft's App-V, application code is downloaded on demand from a central server and executed on the local desktop computer. Although the application is running within a virtual OS environment, this is not a complete virtual machine; rather it provides virtualized interfaces to OS components such as the Windows Registry, and is a great approach for dealing with incompatibilities between applications; but is not useful for dealing with incompatibilities between an application and the host OS; this is because the application it does still make use of OS features, and must still meet the same platform and system requirements as a regular application; for example, if an application won't run under Windows 7 as a traditional installed application, it will still fail when run under App-V on a Windows 7 workstation.
Presentation virtualization typically describes technologies where the execution of application code takes place remotely from the end-user's interaction with the application interface. In Windows environments, presentation virtualization is used by applications delivered using RDS, such as traditional terminal services applications. Using technologies such as Microsoft's RemoteFX, such applications can appear to the end-user as if they are running locally, particularly if configured as a RemoteApp, where the individual application is launched from a regular application shortcut on the user desktop; in this way the user may be unaware that the application is actually a terminal into a remote session running on a server. So, again we've got de-coupling, and with sessions rather than virtual machines.
Looking at Microsoft as an example vendor, what we need to do is think of different types or classes of virtualization. The key feature in all types of virtualization is perhaps the de-coupling of elements such as hardware, OS, applications, and user state and data. Using this as a principle, we can see that the "traditional" approach, such as desktop and server virtualization, achieves this de-coupling by using distinct virtual machines. With user state virtualization, the de-coupling is achieved using remote central data storage; with application virtualization, the de-coupling can be from virtual application environments or through sessions in the case of remote applications and desktops. And implementations using VDI, can achieve de-coupling by using all these tools; virtual machines, centralized storage, and session-based technologies.
So, as long as we can think of the core virtualization concept as a separating or de-coupling approach, then there's no reason not to use the term for a wide range of approaches – and if this is case maybe all Microsoft's virtualizations are real ….