Someone recently asked my opinion about best practices for virtualization—specifically, what should be virtualized. Here's my answer: It isn't so much about what to virtualize as what not to virtualize.

Nearly anything can be virtualized, but does it always make sense? Despite the abstraction from the kernel, all virtual machines (VMs) require physical resources. Memory, processor, storage, input/output per second (IOPS), and bandwidth are requirements for any computing technology. Virtualization is no different.

Compare virtual machines with physical machines
The big difference between virtual and physical machines is that virtual resources are just pooled physical resources. This allows for more efficient use of your resources. You are less likely to have a virtual machine that is more powerful than it needs to be. Instead of using a fraction of the memory and processor, as you often see happening with physical machines, a VM uses only what it needs. On the other hand, resources are still finite; they must still be shared and managed wisely. Running low on resources can affect all VMs.

Assess your resource trends and peak loads
The first thing to consider when asking if something should be virtualized is how resource-intensive it needs to be. For instance, many databases tend to be heavy on the IOPS, which is one common indicator of how fast data can be read from and written to disk. Likewise, large-scale applications tend to be memory and processor reliant, and web servers can heavily utilize sometimes limited network bandwidth.

The key to a successful virtualization engagement is to baseline your current operations. Gain an understanding of your current resource trends and determine how much of your resources your systems utilize.

Determine your low, average, and peak loads. Get an idea of when your resources are most utilized and at what levels. Determine how your backup systems fit into this environment. Keep in mind some backup regiments (depending on a number of factors) can have negative effects on the environment.

Consider how virtualization helps your Disaster Recovery Plan
Other considerations include system criticality and how virtualization fits into your Disaster Recovery Plan (DRP). Virtualization is a relatively easy way to reach your Recovery Point Objective (RPO) within your Recovery Time Objective (RTO). High Availability through clustering and Fault Tolerance for outages can assist in limiting the amount of downtime in the event of unplanned problems. Stretched clusters can assist by pooling system resources between geographical locations, which can increase your percentage of uptime and system availability. If one entire location goes down, stretched clustering using High Availability can keep your systems running seamlessly from the secondary site(s). Many cloud-based providers guarantee 99% uptime in this manner.

Know when to say no
So, what should or should not be virtualized? The answer is, "It depends." Like anything, planning is the most important first step. Proper analysis of your current environment, determining your rate of growth, and determining how far you want to go with your virtualization will help you mitigate any risks when you start implementation. Take a hard look at your critical systems environment. If they perform at high read/write levels, or require higher-than-average memory, processor, or bandwidth resources, the answer may very well be no.

The content of this article is intended to provide a general guide to the subject matter. Specialist advice should be sought about your specific circumstances.