VMware vs. Microsoft, A Memorandum to IT Leadership and Decision Makers

Over the years, VMware has contributed much to server virtualization and made an impact on the IT industry. A great competitor, VMware has been and in my view made Microsoft a stronger and better IT solution provider. Both have been trying hard to help enterprise IT deliver much with less. And a great news is that competitions and open dialogues benefit tremendously to our customers and the IT industry in general. The two companies in my view have however a fundamentally different perspective in addressing cloud computing challenges. Let me be clear. This blog post is not about feature parity. This blog presents my personal view on important considerations for assessing a cloud computing solution platform and is intended to help IT technical leadership and C level decision makers look into the fundamental principles which will ultimately have a profound and long-term impact on the bottom line of adopting cloud computing. The presented criteria apply to Microsoft as much as to any other solution providers in consideration.

Virtualization vs. Fabric

In cloud computing, resources presented for consumption are via abstraction without the need to reveal the underlying physical complexities. And in current state of cloud computing, one approach is to deliver consumable resources via a form of virtualization. In this way, a server is in fact a virtual machine (VM), an IP address space can in reality logically defined through a virtual network layer, and a disk drive appearing with a continuous storage space is as a matter of fact an aggregate of the storage provided by a bunch of disks, or JBOD. All cloud computing artifacts eventually consist of resources categorized into three pools, namely compute, networking, and storage. The three resource pools are logically simple to understand. Compute is the ability to execute code and run instances. Networking is how instances and resources are glued or isolated. And storage is where the resources and instances are stored. And these three resource pools via server virtualization, network virtualization, and storage virtualization collectively form an abstraction, the so-called fabric, as detailed in “Resource Pooling, Virtualization, Fabric, and Cloud.” Fabric signifies the ability to discover and manage datacenter resources. Sometimes we refer the owner of fabric which is essentially a datacenter management solution as fabric controller which manages or essentially owns all the datacenter resources, physical or virtual.

Cloud computing is about providing and consuming resources on demand. It is about enabling consumption via the management of resources which happen to be virtualized in this case. In cloud computing, we must go beyond virtualization and envision fabric as the architectural layer of abstraction. Fabric management needs to be architected as a whole into a solution. Such that the translation between fabric management and virtualization operations in each resource pool can be standardized, automated, and optimized.

So, at an architectural level, look into a holistic approach of fabric management, i.e. a comprehensive view of how the three resource pools integrated and complementary to one another. Let me here recognize that virtualization is very important, while fabric is critical.

VM Template vs. Application Architecture 

When it comes to deploying VMs, a VM template is a tool many IT pros are familiar with and have been relying on. And this is a developed topic and both VMware vCenter and Microsoft Virtual Machine Manager provide various ways to construct VM templates. In cloud computing, deployment is nevertheless not about individual VMs. Modern computing models employ distributed computing in multiple application tiers while each tier may have multiple VM instances taking incoming requests or processing data. A typical example is a three-tier web application including a frontend, mid-tier, and backend and this application is meaningful only when all three tiers are considered and operated as a whole, and not individually. The essence is that a cloud deployment is more about an application architecture which is a set of VMs delivering a target application as one entity, than individual VMs.

So, from a deployment point of view, demand the details on architecting, defining, and deploying an application architecture and not simply on VM templates. The anchor has to be set at an application architecture so considerations on deploying the application are consistent with how an application instance is consumed and managed.

Servers vs. Services

A similar concept to VM template vs. application architecture is servers vs. services. Here a server is the server OS instance running in a deployed VM. “Service” is a term at an operations level including a set of servers (which forms an application architecture) identified and managed as one entity while collectively delivering a target application. In the context of cloud computing, a service carries a set of attributes, five to be specific as defined in NIST SP 800-145 and summarized in the 5-3-2 Principle of Cloud Computing. Deploying a server (or a VM) and deploying a service denote very different capabilities. Deploying ten VMs is a process of placing ten individual servers, and it suggests little on the scope, relationship, scalability, and management of the ten servers. At the same time, deploying ten instances of a service denotes there is one (set of) service definition and with ten instantiations. How many total VMs in the ten instances is not as significant as that the ten service instances deliver a level of scalability, consistency, and predictability since all are from the same service definition. Further since all instances are based on a the same service definition, there is an opportunity by implementing and rolling out changes of the definition to running instances in a systematic and controlled fashion and hence to minimize downtime via “service” management. An upgrade domain, for instance, is a logical construct for implementing a rolling upgrade for multiple instances of a service to ensure minimal, if any, downtime. As the IT industry is adopting cloud computing and the number of VMs and application instances continues to rapidly increase as evidenced by market research, a solution platform setting the focal point on service architecture and management and not just VMs is essential.  A service is also how cloud computing is delivered and consumed.  IaaS, PaaS, and SaaS are announced with the term, service, is a clear indication on how significant the role a service plays. It is “the” way in cloud computing to deliver resource for consumption. If it is not delivered as a servicer, it is not cloud.

So, from an application point of view, what a customer cares is a service and what a service provider should pay attention is what is running in a server and not a server itself. The ability to drill down and gain business and technical insights from not just servers, but the applications running in the servers is what matters. For instance, for a database application what is critical to know and respond to is the health of databases and not just the state of the server which hosts the database application. A cloud solution platform needs to be about the workload configuration and service management and not about the servers deployment.

So investigating how a service is defined, constructed, deployed, and managed including how fault domain and upgrade domain are applied to a deployed service in a proposed solution, how availability and SLA are defined relevant to a service, etc. will reveal the strategy a solution platform is based on.

On-Premises vs. Hybrid

In this post virtualization era, enterprise IT accelerates cloud computing adoption by shortening the transition from a private cloud into a hybrid deployment scenario, or simply a hybrid cloud.  Here a hybrid cloud is a private cloud with a cross-premises deployment. For example an on-premises private cloud with some off-premises resources is a form of hybrid cloud. A hybrid cloud offers an opportunity for keeping sensitive information on premises while taking advantages of the flexibility and readiness that a 3rd-party public cloud can  provide to host non-sensitive data. The idea of a hybrid cloud surfaces an immediate challenge: how to enable a user to self-serve resources in a cross-premises deployment. Self-servicing is an essential characteristic in cloud computing and plays a crucial role in fundamentally minimizing training and support cost while continually promoting resource consumption. Consistent user experience with on-premises and off-premises deployments, SSO maturity and federated identity, an easily implemented delegation model, and inter-op capabilities with 3rd-party vendors are imperative.

Demand a management platform with an ability to manage resources not just physical and virtualized, but also those deployed to a private cloud, a public cloud, or a hybrid cloud. This is critical to any cloud deployment.

Closing Thoughts

Choosing a cloud computing platform is a tremendous task and a critical path for enterprise IT to transition into the next generation of computing. IT leadership and decision makers should exercise more forethought and institute a comprehensive management solution while the first opportunity arises to facilitate fabric construction with cloud computing methodology. Keep staying focused on constructing, deploying, and managing:

  • Not virtualization, but fabric
  • Not a VM template, but an application architecture
  • Not server, but service instances
  • Not on-premises, but hybrid deployment scenarios

For enterprise IT, the determining factor of a successful transformation is the ability to continue managing not only what has been established, but what is emerging; not only physical and virtualized, but those deployed to private, public, and hybrid clouds; not only from one solution platform, but vSphere, Hyper-V, Citrix and beyond.