It seems like no matter what way we turn today in IT, the constant term we hear is “Cloud” followed by some kind of XaaS service (x as a Service). Getting started out, it all can most definitely be confusing and daunting to see all these acronyms and terms being thrown around and what I feel is the worst part about it, is how they seem to be used interchangeably.
Cloud Computing is made up of several models and even when you talk to people these models have completely different meanings from one person to the next. In order to cut out all the “he said this, she said that”, that can happen. NIST or the National Institute of Standards and Technology has defined deployment models, service models and essential characteristics of what makes up Cloud Computing. This is what my take on their definitions are;
Essential Characteristics of a Cloud:
- On-Demand Self-Service: The ability to spin up resources (compute, network, storage, etc.) without having to call or email the service provider. Think about Amazon Web Service (AWS). Every time you want to spin up a AMI or your own image, do you call the deployment specialist at AWS? No, you (or someone) logins into the AWS console and clicks a few buttons and boom, you have a fully functional machine running
- Broad Network Access: Take a cloud service like WebEx for video conferencing. You are not limited to how you can access the service. You can be on a MAC, Windows, Linux, iPhone, Android, etc. and either launch it from a web browser or fireup the WebEx application and connect to your meeting
- Resource Pooling: For this we are going to look at MS Office 365. MS Office 365 is a multitenant environment, which that means that everyone shares the same hardware, so the server(s) that your mail is on, you can share it with a company who uses the MS O365 platform or with different users who use the platform. You have no idea where your data is, but you know that (1) you always have access to it and (2) in the event of an issue, you can get moved dynamically to a new server, pod, data center, region, etc.
- Rapid Elasticity: During the Christmas season, a retailer may need to be able to spin up front end webservers if a certain threshold is crossed. Rapid elasticity gives them the ability to grow horizontally rapidly to the demand that is present at the time. When the demand subsides, then the resources that are not used anymore can be decommissioned. All of this generally happens automatically.
- Measured Service: For bill-back, you can see who used what from a storage, data transfer, network, and/or system resource point of view
Service Models for Cloud Computing:
- Software as a Service (SaaS): We may not know it, but we use SaaS products every day. Email (Gmail, Hotmail, Yahoo, etc) are all examples of SaaS products. The definition of Software as a Service is to be able to use the vendor’s application running on a cloud platform. Some other examples are WebEx, BlueJeans, Google Hangouts, SalesForce, and Microsoft Office 365
- Platform as a Service (PaaS): A PaaS solution is the delivery of a computing platform and solution stack as a service. It facilitates the deployment of applications without the cost of purchasing the underlying hardware, software and dealing with the provisioning of the physical box. Two PaaS examples are Google App Engine and Red Hat Open Shift
- Infrastructure as a Service (IaaS): Probably the most well known IaaS would be Amazon AWS. In AWS, you can provision, compute (EC2), Storage (S3) and networking (VPCs). You however do not control the underlying transport and cloud hardware. You do however have full control over everything else. You will also have full control of a networking device if you spin up say a Cisco Cloud Service Router. That device is configured and monitored by you.
I kind of look at it from this point of view:
If I want to control most of what I would control in my data center, I would look for a IaaS provider. If I want the flexibility of a SaaS but want to use my own programs, PaaS is the way to go. Finally, if you use a program, say SalesForce, SaaS would be the way for you to go.
As if this wasn’t enough, there are also several different types of deployment models. These are a lot more cut and dry, but there are a few that are kind of confusing.
Deployment Models for Cloud Computing:
- Private Cloud: This can either be your own private cloud instance running OpenStack or some variant of it in your on-premise data centers or off-premise, at either a hosted data center or on a cloud service platform. The essence behind a private cloud is it serves one organization that can have multiple business units.
- Community Cloud: The cloud instance is for use by a community or group of people. This can also be hosted in one of their on premise data centers or off-premise, at either a hosted data center or on a cloud service platform
- Public Cloud: This is either an on-premise cloud solution or one at a third party provider that the general public has access to. An example would be a company that has consumer facing web sites sitting in AWS.
- Hybrid Cloud: Takes a combination of two or more cloud deployment models. They remain unique from each other but they allow for bursting if more compute resources are needed at any given point in time.
Once you have these terms down cold, understanding what people are talking about when they talk about “Cloud” makes a little bit more sense.