In this column we have discussed the different types of
services available in the cloud. This list includes IaaS (Infrastructure as a
Service, like Amazon Web Services), PaaS (Platform as a
Service, like Microsoft Windows Azure), and SaaS (Software as a
Service). In this article we are going to discuss the different types of clouds
available today. The service types define how your application is hosted, the
type of cloud defines how the service is operated and managed. All of the
service types could conceptually be run in any of the types of clouds.
There are two primary types of clouds, a public cloud and a
The public cloud, as a product, has been around for a few
years. This is the model that Amazon Web Services and Microsoft Windows Azure
fall into. As a vendor they have invested hundreds of millions to billions of
dollars to build out their data centers. These are top notch data centers that
involve containerized servers, high degrees of automation, fault tolerance and
high availability. They provide the power, the cooling, the staff and the
hardware. The data centers have multiple Internet connections to protect
against physical and ISP failures. In short, it is a turn-key data center for
your use. You pay for only what you use.
Paying for consumption and low upfront costs are key aspects
of cloud computing and represent some of the best advantages it has to offer.
Hand in hand with this is that the public clouds are multi-tenant environments.
That means that multiple customers are using the data center at the same time,
and this isn’t very much different from traditional hosting.
Some public clouds are both multi-tenant and a shared
environment. For example, with Google, your application is running side by side
with an application from another customer. This is fine for a certain class of
applications, but it can lead to worries about security and the ‘noisy
neighbor’ problem. The noisy neighbor problem is when the shared resources
available to your application are hogged up by another customer, starving your
application. Imagine the next application over from you getting millions of
hits during a big ad campaign, and taking up all the bandwidth and CPU cycles
to handle the load. In the meantime your application becomes slower and less
responsive because of the shared resources.
Some vendors, like Windows Azure, are not shared environments.
Multiple customers are using the same datacenter (multi-tenant) but the
hardware assigned to you is allocated in a dedicated way so that no matter what
the next customer is doing you have full access to your resources.
A private cloud is simply a public cloud that is hosted and
run by a company for its own use. Private clouds tend to be smaller in scale
than a public cloud (just one of Microsoft’s datacenters has over 350,000
servers) and they are usually not as fully automated.
Public clouds tend to be built on top of virtualization
platforms (VMware and Hyper-V) to provide the abstraction and isolation from
the real hardware, while giving the just in time allocation of resources to
meet demands. Most companies that deploy a private cloud are usually looking
for a way to bring their virtualization environment to the next level.
Private clouds do suffer from not benefitting from two of
the most important aspects of cloud computing, and that is the lack of upfront
capital cost and minimal management. If you are building a private cloud then
you will have to buy all of the hardware (servers, routers, load balancers,
disks, etc.), all of the software, and then provide staff to manage it all.
Private clouds end up being the modern descendant of ‘lights out operations.’
There are some good reasons to deploy a private cloud. They
usually stem from wanting to find a better way to manage a large amount of
computing that truly cannot be moved to a public cloud. Private clouds are for
when you need cloud like infrastructure (in behavior if not scale) and also
need to maintain complete control.
There are other forms of clouds, but they all stem from the
two main types, public and private. One type that is becoming more popular is a
hybrid cloud that mixes public and private clouds together. These hybrids are
shared amongst different customers, but the customers have a federation or
reason to work together. Imagine a federal government cloud that is only
available to other federal agencies. There are several state governments
already going down this path. This lets them bypass any current concerns of the
public cloud while still cutting costs through consolidation and shared use.
By understanding the two basic types of clouds you can more
easily understand where the industry is and how you might want to enter into
cloud computing. Public clouds give you the maximum benefits of the cloud,
while private clouds satisfy your need for control.
About the Author:
Brian H. Prince is an Architect Evangelist for Microsoft. He
gets super excited whenever he talks about technology, especially cloud
computing, patterns, and practices. His job is to help customers strategically
leverage MS technology, and help them bring their architecture to a super
level. In a past life Brian was a part of super startups, super marketing
firms, and super consulting firms. Much of his super architecture background
includes building super scalable applications, application integration, and
award winning web applications. All of them were super. Further, he is a
co-founder of the non-profit organization CodeMash B (www.codemash.org) and of
WindowsAzureBootCamp.com. Brian was the co-author for "Azure in
Action." He speaks at various regional and national technology events
including TechEd. He only wishes his job didn’t require him to say B ?’super’ so
much. Brian holds a Bachelor of Arts degree in Computer Science and Physics
from Capital University, Columbus, Ohio. He is also a zealous gamer. For
example, he is a huge fan of Fallout 3 and Borderlands.