Wednesday, 19 January 2011

Demistifying "The Cloud"


For the last two days I was attending Private Cloud workshop in Microsoft office in Warsaw. The correct name of the workshop was actually Government Private Cloud Computing but the workshop actually gave great overview about types of "clouds" and the types of services that can be delivered through the cloud. It also covered every aspect of building a cloud solution from technology to process management, automation and billing. What strike me the most is actually how easily the specific cloud type can be defined. I am reading about the cloud infrastructure for a while now and I have even been architecting and implementing public cloud solutions based on Exchange 2007/2010 and Sharepoint 2007/2010 and the workshop helped me to sort in my head everything I have learned so far. The main goal of the workshop was to teach us how to have a conversation with a customer company that plans to go to "the cloud" and how to ask some basic questions that will help us define the cloud or the service that is to be offered through the cloud.

In the next couple of lines I will try to summarize the different service delivery types and the different types of cloud and map those to the actual technology or a scenario based on my personal experience.

Let us first cover the service delivery types:
  • Infrastructure as a Service (IaaS)
  • Platform as a Service (PaaS)
  • Software as a Service (SaaS)

Infrastructure as a Service

The blue boxes shows what Service Provider actually provides to the customer. We can see that those elements are Datacenter, Networking, Computers and Virtualization. In practice that would mean that the provider company takes care of system rooms, electricity and cooling (Datacenter), networking components such as switches and routers (Networking), servers that comprise the monitoring, provisioning, billing and virtualization infrastructure (Computers) and manages virtualization technology such as Hyper-V or VMware clusters. Everything above can be dynamically created, self-serviced and pooled by the customer. In this certain case it would mean that the customer can self-provision virtual machines with the operating system of choice, pool the amount of storage he needs for the virtual machine and install the applications he needs for his business. In a Microsoft world this functionality could be provided by System Center VMM Self-Service Portal 2.0.

Platform as a Service

Now let us move a few boxes upwards. If the operating system and the storage is controlled by a service provider company and the customer can deploy it's own applications that run on the underlying platform of choice then this model is called Platform as a Service or PaaS. Middleware box is grey area here. Let us consider a scenario where the customer gets presented by an empty virtual machine where he can deploy his own engine like Oracle Application Server and build his own applications on top of that. Then the middleware would be controlled by a customer. Or we could provide the customer with Microsoft Sharepoint 2010 site collection and give him the ability to deploy his own web parts or workflows. The customer would not have access to the operating system in this case. He would only have access to his own little isolated area on Sharepoint and anything he deploys there is relevant only to him and it does not affect other customers. Sharepoint 2010 has sandboxed solutions integrated so this would make for a perfect example of Platform as a Service.

Software as a Service

If the service provider company has the total control of the stack and the customer only consumes services such sending and receiving of e-mail, upload documents to sharepoint or scheduling and running voice conferences than this is called Software as a Service. Customer only sees the service he uses and has no control of any aspect of the underlying platform. Self-service in this case would mean that the customer administrator can provision a new mailbox for an employee inside his own company or could enable the user for voice conferencing so that he can share video and audio with his colleagues. Examples of these in a Microsoft world are of course Exchange, Sharepoint, OCS and CRM.

There are few other aspects of the service delivery models that must be met so that we could call our solution a "cloud solution". The workshop I have attended specified the following characteristics which I will try do describe in my own words:
  • Resource Pooling - the ability to share resources such as network, memory and processing power and provide the resources when needed to the workload that needs them
  • Measured Service - the ability to measure service utilization per customer such as number of mailboxes he used during the last month, the amount of GBytes he uses on the storage for mailbox, documents, databases etc. or bandwith that was consumed. The most important thing is that the customer can be charged only by what he spent the last month. If the number of mailboxes decreased or the bandwith utilization dropped from the previous month, the customer should be charged accordingly!
  • Broad Network Service - the service should be possible to be accessed from anywhere using any Internet connection
  • Rapid Elasticity - the service should be possible to scale out or scale up in the shortest amount of time. Consider adding new virtualization host to the infrastructure to increase processing power or adding new disk shelf to increase storage space or increase performance. The service should also be able to rapidly scale down if resources are not used. An example for this is moving running virtual machines to the smaller number of hosts and then shutting down hosts with no load.
  • On-Demand Self Service - the customer should be able to self-provision the service such as create a new mailbox, add additional disk space to the virtual machine or enable an employee for Sharepoint or OCS access

Now when we have defined the service delivery models and cloud service characteristics we will cover the cloud deployment models. There are four deployment models:

  • Private cloud - this cloud infrastructure is operated solely for a specific organization. It can be managed by an organization itself or by a service provider and may exist on premise or off premise. Owner of the infrastructure components can be either the customer or the service provider. I can think of a scenario in Microsoft Online Services and e-mail hosting. If you have large enough company with plenty of e-mail users, Microsoft would provide a dedicated infrastructure just for you and it would be managed and operated by Microsoft for your company only. Or there could be another reason for a private cloud infrastructure. An organization security policy could specify that data must somehow be  separated and isolated from other organizations which would require a dedicated e-mail server just for the specific organization or a dedicated hardware infrastructure.
  • Community cloud - the cloud infrastructure that is shared by several organizations and supports a specific community that has shared concerns such as mission, security requirements, policy and compliance considerations. A good example for this scenario are government ministries or agencies that could share the same common infrastructure.
    • Public cloud -  this cloud infrastructure is made for general public and owned and maintained by an organization (service provider) that sells cloud services. Examples would be e-mail services, shared or dedicated Sharepoint servers, virtual machines etc.
    • Hybrid cloud - composition of two or more models (private, community or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability.


    So where does the technology fits in? Almost every major vendor out there today is delivering its own solutions that are cloud enabled or will help you to get to the cloud. Microsoft naturally has its own set of solutions that I will try to cover briefly here.

    • Hardware - hardware selection is totally up to you. You can choose server, storage or network vendor you like or already work with
    • Virtualization - there are at least three out there that I would recommend, Hyper-V, VMware and XenServer, they all do their jobs excellent
    • Deployment - System Center Configuration Manager is a perfect tool for deploying new operating systems, either provisioning new desktops for the customer or new Hyper-V hosts for the service provider or patching the existing infrastructure
    • Monitoring - System Center Operations Manager - used for monitoring the entire environment and alerting in case something goes wrong or you just want to be notified about. It can also be used as a billing tool to show your customer how much "resources" have been used for the past month.
    • Automation - Microsoft has a new member of the System Center family and it is called Opalis. It is used for Datacenter automation. It enables you to automate certain Datacenter processes and helps you get "elasticity" for your cloud infrastructure. One example of automation could be installing new OS on the server, joining it to virtualization cluster, deploying new patches and updates and deploying SCOM agent for monitoring. You can do that with this tool. Microsoft also provides already mentioned System Center Virtual Machine Manager Self-Service Portal 2.0. It can be used for automating virtual machine deployment and it is also customizable in a way it can be further developed or branded for each customer. 
    • Provisioning - provisioning application in the cloud infrastructure is used in two different ways. If you work for service provider company then you would probably use it to quickly provision new customer and give him access to your services. If you are customer, you will probably use the provisioning application (usually a web interface) to quickly create new virtual machines or create new mailboxes for your employees. Microsoft has no unified software that would deal with all scenarios but here are some examples. Exchange 2010 with SP1 has multi-tenancy feature integrated and it provides the so-called Exchange Control Panel or ECP. If you are a customer that is provisioned on a shared or hosted Exchange 2010 server you would probably get access to ECP and have a possibility to manage mailboxes for your employees only. Other customers on that same Exchange server are completely isolated from your users. However, the provisioning application for the service provider company in regard to Exchange 2010 server does not really exist. There is only a powershell interface you can use or develop your own. But luckily there are companies out there who already have a software for that purpose.

    Well I hope that I have helped you to understand some of the basics of the cloud infrastructure and that the cloud paradigm is not so cloudy to you anymore :)

    Please feel free to comment on this post and give your view about the terms and definitions about "the cloud". I have to be honest and say that I am by no means an expert on this field because the topic is so huge and it would probably take years of experience to understand it completely but I can definitely say that the workshop I have attended helped me to get some basic understanding.


      No comments:

      Post a Comment