An important attraction of using Virtual Machines (VM) instead of traditional servers can be presented as a Capacity Management (CM) advantage.
While a traditional server can serve multiple purposes up to a point, they are not built to be as flexible, and don’t scale in the same way. A server is a combination of hardware and software, with the software being relatively static in configuration. If needs are highly variable, more servers of different types are needed, and so multiple stochastic demands have to be met with relatively independent servers.
But a VM environment does two key things: it decouples the software from the hardware, so now the software is a pool; and it allows hardware to be configured more freely, so that it can be shared as well. So now software can be provisioned rapidly, closer to real time, and hardware can be shared among a larger pool of resources. By decoupling software from hardware, and making hardware a rapidly configurable resource, the various demands now share a larger pool, may vary less overall, and share a larger pool. By sharing a larger pool, utilization can be managed tighter, even with the same variability, so hardware resources are wasted less. Software, because it can be freely copied in such an environment, can be rapidly created and destroyed as needed, as long as licensing can allow it.
So what used to have very long lead times, leading to higher costs and lower utilization of resources, now can be managed with higher utilization and lower costs, simply because VM can be rapidly created and destroyed as needed, in the form needed. The true advantage of VM, and indeed Cloud architectures as well, is better systems behavior for CM.