Why not virtualize everything?

Virtualization is seen as a magic wand in server world. What ever your problem, lets virtualize and consolidate and your problems will be gone. This is far from truth. When you look at applications runninng on servers most of them are not designed to handle a lot of resources. When you want to use them above their design limits their either fail or use so much resources that performance drops. In that case you will mostly use more servers with smaller hardware footprint. These are good candidates for virtualization. However there may be other alternatives that can use physical hardware more efficiently and thus do not need to be virtualized.

One of the examples is Terminal Services. When using 32-bit Terminal services on Windows server 2003, you are limited with memory and CPU that you can consume. Scaling terminal services depends on the applications thats being used platform is also key for scaling. Even if you increase Ram above 4 GB (say 8 GB), your numbers will not increase due to 32-bit architecture limits. In 32-bit Windows users can use up to 2 GB, the left is used by kernel. You can reduce the memory kernel down to 1 GB and this will provide 3 GB for user applications. However there are other kernel resources that need memory and you are likely to hit those limits in a Terminal services environment. One way to increase your number of users, is to have a server with 8 GB of RAM, use Hyper-V and create 2 virtual machines and install 32-bit terminal services on top to get twice as much users. However when terminal services is used with virtualization, due to the nature of the application performance may drop. New processors have features that can eliminate this problem but your performance will not increase twice as much. The other alternative would be to move to 64-bit terminal services (or Remote Desktop Services in Windows Server 2008 R2) and use physical hardware. This will both increase the number of users on a single box and increase your performance due to advances in the connection protocol (RDP).

Somethimes perfecting a in-house business application can take time. The general tendency will be to keep the application as it is as long as possible and try to change the environment to gain advantage. However this is only a temporary measure. Technology is evolving to become more efficient and provide more features. However your applications should evolve and adapt to the new environment. Protecting an application can cost you more than you think.