Earlier we reviewed the importance of understanding relationships and dependencies in virtualized environments, and challenges they create for administration and management. There has been a common theme in analyzing them – every time you depend on a resource, it constrains your flexibility. So how can you identify and manage constraints in your environment?
Let’s have a closer look at these constraints and try to understand the problem better. There are several types of constraints.
Resource constraints: e.g., a VM in order to boot its operating system has to have at least 1GB of RAM. A variant of resource constraint is the need to have some specific instances of resources, e.g. a VM in order to run on some host has to have access to some specific datastore and network as it refers to them by name.
Hardware dependencies: e.g., certain VMs may require specific CPU architecture (32- or 64-bits) or a specific CPU version, otherwise vMotion would fail. There is a big class of software dependencies where VMs with the specific virtual hardware version may require the specific hypervisor version.
Affinity and anti-affinity rules, which often implement compliance, security and performance restrictions by enforcing certain entities to always be adjacent or separate. For example, SOX compliance may require that VMs carrying some investment information must not share any physical hardware with VMs responsible for retail banking, etc. Or frequently communicating VMs better run inside one host to avoid expensive trips via an external switch. Then there are licensing constraints which limit the number of VM per physical CPU core for a specific software product (like a database).
This list could be continued indefinitely, the IT stack is very diverse. There are two important aspects in understanding the constraint impact.
First, constraints have performance and efficiency implications. For example, you may have a very powerful ESX host which could accommodate many of your VMs and provide much better response time, but they are built with the incompatible virtual hardware version. Or you could consolidate some VMs on fewer number of hosts and save on hardware, but anti-affinity rules prevent this. And all these constraints have different cost of maintenance with hard to calculate financial impact.
Second, finding and eliminating these constraints is a very non-trivial exercise. You need to know all the relationships and dependencies, and then follow every dependency chain to see what segmentation it creates. Think of it as a multi-dimensional space where every dimension is either a specific resource or a dependency. The constraints create an area or a segment in this space which limits the workload movements along the dimensions. In order to know the boundary of this segment one need to solve a multi-dimensional puzzle. The number of such dimensions could be in hundreds. We already mentioned the Tetris game which is usually played in 2-dimensional space. Try to play it in 100-dimensional space. And in real time.
This poses an interesting challenge. Modern SDDC technology like SDN and SDS claim that they flatten the datacenter space and enable ultimate workload mobility. In reality they flatten this space along one or several dimensions (e.g. eliminating VLAN or SAN boundaries). However, if the remaining dimensions are still constrained, you cannot freely move the workload. Moreover, discovering which constraints are most constraining is difficult. So when you plan for these new technologies, you must first asses your readiness to realize benefits.