Managers should seek applications with complementary demands. This can be a problem because the natural tendency of someone brought up in the server environment of a data centre is to think in terms of putting the same virtualised applications on the same servers. In the traditional server world, it's common to have one or more servers devoted to mail, another group of servers devoted to the Web, another to databases and so on.
But this is exactly the wrong thing to do in the virtual world.
That means you want to be careful about putting two applications that require a lot of memory, or storage, or any of the same resource, on the same server.
It may work when neither application is doing a lot of work, but as the load gets heavier, you're going to run into problems of resource contention and degraded performance.
Balancing resources is trickier than it sounds, because you can't simply take two virtualised applications, each of which uses 50 percent of a physical machine's resources, load them both on the same physical machine and expect things to go well.
Even two applications that look like a perfect fit may interfere in minor - but critical - ways. An application that normally has low RAM requirements may occasionally spike its RAM demand. If it's loaded on a physical box with an application that constantly needs a lot of RAM, you've not only got a problem, you've got one that's probably weirdly intermittent.
The bottom line is that you can't predict absolutely if two applications will virtualise well on the same physical box. The only way to know for sure is to test the combination. "You have to see what works well and what doesn't," Radiator Express' Carvalho says.
"I would not take an unknown application whose features I have not thoroughly tested and expect all the features to work the first time out."
The good news is that virtualisation makes it easy to run the virtualised servers on a test system and then migrate them over and go live if the combination works.
The testing procedure has a lot in common with testing a physical server supporting a single application. That is, you run test loads until you're sure that it works, can characterise the virtual server's performance and can confirm that the level of performance is acceptable.