Virtualization's Railroading Moment
Here's one definition of virtualization:
The process of presenting a logical grouping or subset of computing resources so that they can be accessed in ways that give benefits over the original configuration.
wikipedia.org/wiki/Virtualization
Here's another:
A framework or methodology of dividing the resources of a computer into multiple execution environments, by applying one or more concepts or technologies such as hardware and software partitioning, time-sharing, partial or complete machine simulation, emulation, quality of service, and many others.
www.kernelthread.com/publications/virtualization/
By yet another, more succinct definition, "virtualization abstracts out things." Or maybe that's a little too succinct.
But virtualization does abstract out things, and this abstraction can occur at different levels. Hardware virtualization exhibits different degrees of granularity and isolation compared to operating system-level virtualization, and is appropriate for different uses. Application virtualization is yet a third level of abstraction, with different degrees of granularity and isolation, and different uses.
Those uses include abstracting away the arbitrary boundary between one server or hardware resource and another to make near-optimal use of such resources; isolating untrusted applications; containing errors and faults; saving context for disaster recovery; debugging operating systems; running legacy applications; increasing application portability/mobility; simulating specific hardware configurations, such as a network of computers; running multiple operating systems simultaneously, for example to test web applications; and various uses in training and testing and research.
It's worth pointing out that virtualization is hardly a new concept in computing. IBM has had a huge role in the 40-plus-year history of virtualization, from the IBM S/360 Model 67 mainframe to its ongoing work today. IBM's early virtual machines were clones of the underlying hardware running on a component called the "Virtual Machine Monitor" (VMM), which ran directly on the hardware. And virtualization has been available in various forms ever since. Windows NT had its Windows on Win32 virtual machine for 16-bit Windows and other "execution environments." And the Java Virtual Machine implements another kind of virtuality, as did the UCSD P-System in the '70s and '80s.
But fast microprocessors and new computing needs such as server farms may be bringing virtualization to its railroading moment (as in Robert Heinlein saying "when it's time to railroad, people start railroading").