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
Platform as a Service
Software as a Service
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.