System Center 2012 SP1 Explained: Understanding Virtual Machine Manager (VMM 2012 SP1) Fabric and Service Template
There are two important concepts in VMM 2012 SP1 to understand Microsoft private cloud solutions. “Fabric” and “Service Template” they are.
Fabric, Cloud Computing Abstraction Integrated in VMM
In Microsoft private cloud solutions, VMM is the management solution for virtualized resources. In the context of cloud computing, virtualization now encompasses three disciplines. In addition to server virtualization which many IT professionals are familiar with, network virtualization and storage virtualization are included as the three resource pools to together form the so-called fabric. VMM 2012 and later has the (fabric) abstraction architected in. Designed with constructing and managing fabric in mind, VMM has becomes a key enabler in implementing a private cloud solution.
In cloud computing, fabric is an abstraction signifying the ability to discover, identify, and manage a resource. And there are three resource pools: Compute, Network, and Storage integrated with one another to collectively form the fabric. Namely a resource added into one of the three resource pools will by default become part of the fabric and automagically a managed object. Here the Compute pool represents all resources relevant to the computing power, cpu cycles, and execution of code. The Network pool is how resources are glued together or isolated. And the Storage pool is where digital assets are stored.
In VMM 2012 SP1, Admin Console (as shown on the left) substantiates the concept of fabric and the three resources pools with visual presentations. Clicking the Fabric workspace will display the three resource pools on the navigation pane as Servers (as Compute), Networking, and Storage. Each pool includes groups of components and configurations to support designated functions. One major part of building a private cloud is to establish the three resource pools by adding and configuring server, network, and storage virtualization solutions and components into an associated resource pool.
Above the fabric are resources available for consumption. While under the fabric are three resource pools managed by VMM offering computing power, networking capabilities, and storage space to fulfill requests with elasticity. Fabric offers simplicity and shield a user from those complexities under the hood.
Service as Capacity on Demand
Conceptually, the term, service, in the context of cloud computing means capacity on demand. Hence IaaS or Infrastructure as a Service means infrastructure available on demand. For IT professionals, infrastructure means servers and in cloud computing servers are deployed as VMs since all consumable resources in cloud computing are all virtualized. Therefore, IaaS becomes the ability to deploy VMs on demand.
PaaS is Platform as a Service. An application platform means a target runtime environment for an application. PaaS is then a runtime environment available on demand. A runtime environment includes DLLs, APIs, registry, services, etc. which are configured after a server OS is put in place which is what IaaS delivers. This suggests that PaaS has a dependency on IaaS.
SaaS is Software as a Service. Software is essentially an application. SaaS says an application available on demand. While an application is to run in a target runtime environment, if the target runtime environment is available on demand, the application can consequently become available on demand. For instance, a .Net application is to run in a .Net Framework environment which is what Windows Azure PaaS offers. Since the .Net Framework runtime environment is available on demand, a .Net application deployed to Windows Azure can then become available on demand, i.e. deployed with SaaS. In other words, SaaS relys on PaaS of a target runtime environment.
This relationship between IaaS, PaaS, and SaaS presents a logical approach for transforming enterprise IT into a cloud computing setting. That is to start with IaaS, transition to PaaS, and ultimately deliver SaaS. This concept is realized in a VMM Service Template deployment.
VMM Service Template
In VMM, a service has an operational definition as a set of VMs deployed and managed as one entity and collectively delivers a LOB application. This definition is significant.
A VMM service template is a deployment blueprint capable of encapsulating everything needed for deploying an application including application architecture, contents, requirements, configurations, processes, tasks, and operations. With a service template, IT can now deploy, configure, and substantiate an instance of a target application with consistency and predictability. The introduction of a service template makes deployment as a service a reality.
For example, the following is a service template with a web frontend, a mid-tier on operations, another mid-tier as business service layer, and a SQL backend. With each machine tier, a VM template is put in place with hardware profile, OS profile, application profile, and database profile as applicable. Associated with the four VM templates, there are two web application packages, a server app-v package for order processing, a server app-v package for business services, and five database deployment packages respectively.
Start from IaaS
Here these four VM templates collectively deliver a LOB application suggests this set of VMs represents the application architecture. By deploying this web application as a service in VMM denotes that the application architecture can be managed as a single entity. The ability to deploy an application architecture, i.e. a set of VMs to collectively deliver an application, is a realization of IaaS. Namely VMM can provision the infrastructure (i.e. deploy a set of VMs) of an application on demand.
Transition to PaaS
Since the entire application architecture can be put in place as one entity, the processes to configure a target runtime environment for the application can be automated and carried out upon completion of deploying the architecture. For instance, once the set of VMs forming the multi-tier architecture of the web application is in place, the process can subsequently install web server role, .Net Framework, server app-v, and SQL Server on selected VMs and validate interdependencies like protocol, APIs, ports, rules, etc., if any, among these VMs. The outcome is a set of VMs configured to provide a target runtime environment. Since the application architecture is deployed on demand, the runtime environment can be automatically configured upon the application architecture is deployed, hence the application runtime environment (i.e platform) is available on demand. This is essentially transitioning from IaaS to PaaS.
Finish with SaaS
As the target runtime is configured, the process can then kick off the application installation procedures. This is when frontend IIS server, mid-tier operations and business service servers, and backend SQL server are installed with web application packages, server app-v packages, and database packages respectively. Application parameters, customizations, and interdependencies among servers at the application layer are at this time set and validated. Upon the target application is successfully installed and started, an instance of the application is then substantiated. And because the runtime environment (or platform) is available on demand, the application running in the runtime environment can now be installed and becomes available on demand. Which is SaaS.
Application Deployment as a Service
A service template can in essence encapsulate everything needed to successfully deploy a target application. The process starts with IaaS to deploy the application architecture, followed by transitioning to PaaS when configuring runtime environment, and then installing the target application and presenting the application with SaaS.
Once a service template is validated against fabric, i.e. all resources referenced in the template are correct and available in fabric, an application can be deployed by substantiating (i.e. deploying) an instance of the service template. Since the deployment of VMs, the runtime environment configurations, and the application installations and customizations can all be automated, the process to deploy a service template can be simplified to a few mouse clicks. And a successful deployment of a service template results with an instance of the target application.
There are many details embedded in a service template to make each service template deployment isolated from one another, and a unique application instance to the fabric. Nevertheless, the employment of a service template provides consistency of application design and configurations. It is similar to using the same layout to build a house, while all houses are with the same layouts, all houses are still individually identifiable and unique.
Closing Thoughts
A fundamental approach in cloud computing is to develop process patterns for consistency, repeatability, predictability, and simplicity. Fabric and Service Template in VMM 2012 SP1 are two vivid examples to hide away and replace complexities with patterns and blueprints. Both suggest some form of logical grouping and standardization. Once standardized, automation can follow to increase efficiency and reduce TCO. And for those automated, maximize ROI with optimization. Ultimately VMM 2012 SP1 is about building a private cloud delivering quicker, better, and more, while all with less.