Architectural Manifesto - An Introduction To The Possibilities (And Risks) Of Cloud Computing
1. Architectural manifesto: An introduction
to the possibilities (and risks) of cloud
computing
Introduction
There has been increasing hype about cloud computing during the last year. Big
companies such as IBM®, Microsoft®, and Amazon have announced their strategies for
cloud computing. Smaller companies, even start-ups, have offered their services. As
always, when something is hyped a lot, it's good to ask why we care about it, and what
are the benefits to be gained by customers. This last installment of the Architectural
Manifesto explores, at a high level, cloud computing and its possibilities for both vendors
and customers.
Often called Software as a Service (SaaS), cloud computing is also sometimes referred to
as everything as a service (EaaS). It can include the servers, databases, software, or any
combination of them. In Layers we’ll explore the different layers (or services) that cloud
computing vendors can offer. We'll also discuss the risks of cloud based services. First,
though, an introduction to cloud computing.
Cloud computing
In short, cloud computing means that companies, the users of IT services, can buy their
IT related services as a service. Instead of buying servers for internal or external services,
or buying software licenses, the company can buy them as a service. This is nothing new.
Hosting services have been around for quite some time, allowing you to focus more on
your business than on the IT infrastructure. Still, cloud computing has something more to
offer.
Imagine that a big vendor is selling their goods through a Web portal. They need access
to servers and infrastructure to support the biggest peaks in demand (peak hours of day,
peak days before holidays), but most of the time they can manage with smaller capacity.
They start wondering if they really have to own so much infrastructure which is not fully
used most of the time. With a hosting service, the big vendor could buy the needed
infrastructure as a service, pay a monthly or yearly fee, and worry less about their
infrastructure. They would buy exactly the capacity they need, as they need it at peak
times. With cloud computing, they would pay for peak capacity based on usage. The
benefits for the customer are quite obvious.
2. IBM and Amazon Web Services
IBM and AWS are teaming up to provide access to IBM software in a virtual computing
environment. The Amazon EC2 experience lets you evaluate and use software without
having to install it on your own system. You can adjust capacity almost instantly,
building enterprise-ready applications in a reliable, high-performance environment where
you pay only for the time and capacity you use. Our software offerings on EC2 include:
• DB2 Express-C 9.5
• Informix Dynamic Server Developer Edition 11.5
• WebSphere Portal Server and Lotus Web Content Management Standard Edition
• WebSphere sMash
This is product-level code, with all features and options enabled. Get more information
and download the Amazon Machine Images for these products on the developerWorks
Cloud Computing Resource Center.
For more cloud computing resources, see the Cloud computing space on
developerWorks.
Characteristics
There are several key characteristics of cloud computing:
• The customer doesn't have to know (and buy) the full capacity they might need at
a peak time. Cloud computing makes it possible to scale the resources available to
the application. A start-up business doesn't have to worry if the advertising
campaign works a bit too well and jams the servers.
• Customers pay only for what they use. They don’t have to buy servers or capacity
for their maximum needs. Often, this is a cost savings.
• The cloud will automatically (or, in some services, with semi-manual operations)
allocate and de-allocate CPU, storage, and network bandwidth on demand. When
there are few users on a site, the cloud uses very little capacity to run the site, and
vice versa.
• Because the data centers that run the services are huge, and share resources
among a large group of users, the infrastructure costs are lower (electricity,
buildings, and so on). Thus, the costs that are passed on to the customer are
smaller.
Customers get the services they want, and pay only for their actual usage. If their Web
site gets a lot of visitors five days a week, but is almost dead on weekends, they'll pay for
the capacity they need (and use) only on the weekdays.
Layers
3. There are several recognized layers in cloud computing. The vendors in these layers have
very different service offerings and operating models. Some vendors concentrate on
building and maintaining a huge data center, while others concentrate on building a user
friendly and feature-rich application. The layers, from bottom to top, are: infrastructure,
storage, platform, application, services, and client.
Infrastructure
At the bottom is the infrastructure of the service, or the platform virtualization.
You get the kind of server environment you want. This is the basic offering;
customers still need to handle the server, all software installation, and
maintenance by themselves.
The cloud computing infrastructure does differ from traditional hosting services
because of scalability, and pay-as-you-go pricing. A start-up company might be
very interested in getting the scalability, and in not paying for the time they're not
using the service. It is convenient, especially if you’re trying to grow the traffic on
your Web application but don’t know how soon, or how well, you'll succeed.
Storage
With the storage layer, you get a database or something similar, and pay per
gigabyte per month. A storage layer is nothing new or special, except for the full
stack of services. It is, of course, vital.
There are several possibilities for storage. Some are traditional relational
databases, and some are proprietary solutions such as Google's Bigtable or
Amazon's SimpleDB.
Platform
The platform layer has solution stacks such as Ruby on Rails, LAMP, or Python
Django. Now things start to get interesting. That fictitious start-up company
doesn't have to deal with the installation of server software, or keep their versions
updated, because that comes with the service. They can focus on developing and
marketing their application.
Application
The application layer contains applications that are offered as services. The most
famous examples are probably Salesforce.com and Google Docs, but there are
hundreds if not thousands of (real) applications that can be purchased as services.
Popular Web applications such as Facebook, Flickr, and LinkedIn are cloud
services. In these cases, the customer probably doesn't know if the application is
run in a scalable data center, in an ordinary hosting service, or in the service
providers basement. But, that isn't a concern or problem for the customer who
needs to use the application. This layer is probably the most visible part of cloud
computing. It emphasizes the benefits that can be seen by customers.
Services
The services layer contains interoperable machine-to-machine operations over the
network. The most prevalent example of this layer is Web services. Other
4. examples include payments systems, such as Paypal, and mapping services, such
as Google Maps and Yahoo Maps.
Client
At the top of the stack is the client layer, which contains the users of the cloud
systems. Clients are, for example, desktop users (thin client or thick client), and
mobile users (Symbian, Android, iPhone).
As you can see, there are vast opportunities for vendors to offer exiting and new services,
and for customers to find services and applications that solve their problems. However,
there are some risks that customers need to understand.
Risks
There are several points to consider before signing up for cloud based services. Don’t
think of the risks below as show stoppers or cardinal failures, but as issues you must
acknowledge while making decisions. You should analyze whether cloud based services
are right for your needs, and which of the available services is the right one for you.
Vendor lock-in
Make sure there is an easy way to get your data out of the service. If you're using
an infrastructure service, backing up the files and data should be relatively easy. If
you’re using a Web application, be sure to have a plan for taking your data with
you in case you need to switch to another vendor. You don't always need to move
all of your data to the new application if you have a way to somehow view the
data. For example, you don't have to move all of the old time tracking
application's data to the new one if you have viewable access to it.
Reliability
If something goes wrong with the service provider, such as servers going down,
the customer can do nothing. For situations like this, it's better to choose a service
provider who offers mirrored sites. Sometimes, though, even this is not enough;
even the big vendors can have problems.
Data security
This is not always a risk. The security procedures and expertise of the vendor
might be a lot better than those of a small start-up.
The issue to consider is: who gets to see your data, and what are the vendors
policies for this. For example, if your data is sensitive for competitors to see,
check your vendor's policies.
Going out of business
Investigate what would happen to your data, or to the application, if your vendor
is forced to shut down. This negative aspect might be something that is seldom
mentioned in marketing materials. If exporting your data is easy, then the possible
shut down of the vendor shouldn't be that dangerous. You would still face the
problem of finding a suitable new application (or vendor) for your business needs,
though.
5. Conclusion
In this edition you learned about the essence of cloud computing, key characteristics, the
layers, and some risks to be assessed. To the average customer, cloud computing means
getting the services you want and paying per your usage. Cloud computing has many
characteristics, such as scalability, on demand resource allocation, and economies of
scale. There are six layers in the cloud computing stack, ranging from infrastructure to
the client layer. Vendors operate and offer services in one or more of the layers. You also
learned about risks that customers and future vendors should consider.
Cloud computing is not just a trend that might happen some day. It's a reality; typical
Web users use cloud services daily whether they know it or not. In the near future we’ll
probably see a stronger trend of corporate services and applications moving toward
clouds. Naturally there are certain applications that corporations would rather run in their
own servers, but the majority of corporate applications should be appropriate for cloud
computing.