You are on page 1of 8

Introduction

What is cloud computing?

The question seems pretty innocuous and simple, but looks are deceiving. There are hundreds, if
not thousands, of cloud computing definitions floating around the Web today. To answer this
question adequately, it might be easier to first understand what cloud computing is not before we
try to arrive at a definition.

Some will suggest that cloud computing is simply another name for the Software as a Service
(SaaS) model that has been on the forefront of the Web 2.0 movement. Others say that cloud
computing is marketing hype that puts a new face on old technology, such as utility computing,
virtualization, or grid computing. This thinking discounts the fact that cloud computing has a
wider scope than any of these particular technologies. To be sure, cloud solutions often includes
these technologies (and others), but it's the comprehensive strategy that sets cloud computing
apart from its predecessors.

For the purpose of this article, consider that cloud computing is an all-inclusive solution in
which all computing resources (hardware, software, networking, storage, and so on) are
provided rapidly to users as demand dictates. The resources, or services, that are delivered are
governable to ensure things like high availability, security, and quality. The key factor to these
solutions is that they possess the ability to be scaled up and down, so that users get the resources
they need: no more and no less.

In short, cloud computing solutions enable IT to be delivered as a service.

Why cloud computing?

There are many reasons why more and more companies are shifting toward IT solutions that
include cloud computing. First of all, cloud computing can cut costs associated with delivering
IT services. You can reduce both capital and operating costs by obtaining resources only when
you need them and paying only for what you use. In addition, by offloading some of the burden
associated with managing various resources across the enterprise, your key personnel can focus
more on producing value and innovation for the business. Finally, cloud computing models
provide for business agility. Since the entire IT infrastructure can scale up or down to meet
demand, businesses can more easily meet the needs of rapidly changing markets to ensure they
are always on the leading edge for their consumers.

In many ways, cloud computing is the realization of combining many existing technologies
(SOA, virtualization, autonomic computing) with new ideas to create a complete IT solution.

Back to top

Anatomy of a cloud
With what is hopefully is an acceptable definition of cloud computing behind us, let's take a look
at the layers of the cloud. Figure 1 is a distillation of what most agree are the three principle
components of a cloud model. This figure accurately reflects the proportions of IT mass as it
relates to cost, physical space requirements, maintenance, administration, management oversight,
and obsolescence. Further, these layers not only represent a cloud anatomy, but they represent IT
anatomy in general.

Figure 1. Cloud anatomy

The layers that make up a cloud include:

 Application services

This layer is perhaps most familiar to everyday Web users. The application services layer
hosts applications that fit the SaaS model. These are applications that run in a cloud and
are provided on demand as services to users. Sometimes the services are free and
providers generate revenue from things like Web ads, and other times application
providers generate revenue directly from the usage of the service. Sound familiar? It
probably does since almost all of us have used them. If you've ever filed your taxes
online using Turbo Tax, checked your mail using GMail or Yahoo Mail, or kept up with
appointments using Google Calendar, then you are familiar with the top layer of the
cloud. These are just a couple of examples of these types of applications. There are
literally thousands of SaaS applications, and the number grows daily thanks to Web 2.0
technologies.

Perhaps not quite as apparent to the public at large is that there are many applications in
the application services layer that are directed to the enterprise community. There are
hosted software offerings available that handle payroll processing, human resource
management, collaboration, customer relationship management, business partner
relationship management, and more. Popular examples of these offerings include IBM®
Lotus® Live, IBM Lotus Sametime®, Unyte, Salesforce.com, Sugar CRM, and WebEx.

In both cases, applications delivered via the SaaS model benefit consumers by relieving
them from installing and maintaining the software, and they can be used through
licensing models that support pay for use concepts.

 Platform services

This is the layer in which we see application infrastructure emerge as a set of services.
This includes but is not limited to middleware as a service, messaging as a service,
integration as a service, information as a service, connectivity as a service, and so on. The
services here are intended to support applications. These applications might be running in
the cloud, and they might be running in a more traditional enterprise data center. In order
to achieve the scalability required within a cloud, the different services offered here are
often virtualized. Examples of offerings in this part of the cloud include IBM®
WebSphere® Application Server virtual images, Amazon Web Services, Boomi, Cast
Iron, and Google App Engine. Platform services enable consumers to be sure that their
applications are equipped to meet the needs of users by providing application
infrastructure based on demand.

 Infrastructure services

The bottom layer of the cloud is the infrastructure services layer. Here, we see a set of
physical assets such as servers, network devices, and storage disks offered as provisioned
services to consumers. The services here support application infrastructure -- regardless
of whether that infrastructure is being provided via a cloud -- and many more consumers.
As with platform services, virtualization is an often used method to provide the on-
demand rationing of the resources. Examples of infrastructure services include IBM
BlueHouse, VMWare, Amazon EC2, Microsoft Azure Platform, Sun ParaScale Cloud
Storage, and more.

Infrastructure services address the problem of properly equipping data centers by


assuring computing power when needed. In addition, due to the fact that virtualization
techniques are commonly employed in this layer, cost savings brought about by more
efficient resource utilization can be realized.

Back to top

Public, private, and hybrid clouds

Now that you have an idea about what cloud computing is and what makes up a cloud computing
solution, let's take a look at the three major types of clouds. For the purpose of this article, we'll
take a look at the types as they would relate to an enterprise consumer of cloud computing
(Figure 2):

Figure 2. Cloud types

 Public clouds are cloud services provided by a third party (vendor). They exist beyond
the company firewall, and they are fully hosted and managed by the cloud provider.

Public clouds attempt to provide consumers with hassle-free IT elements. Whether it is


software, application infrastructure, or physical infrastructure, the cloud provider takes on
the responsibilities of installation, management, provisioning, and maintenance.
Customers are only charged for the resources they use, so under-utilization is eliminated.

However, this comes at a cost. These services are usually offered with "convention over
configuration," meaning that they are delivered with the idea of accommodating the most
common use cases. Configuration options are usually a smaller subset than what they
would be if the resource was controlled directly by the consumer. Another thing to keep
in mind is that since consumers have little control over the infrastructure, processes
requiring tight security and regulatory compliance are not always a good fit for public
clouds.

 Private clouds are cloud services provided within the enterprise. These clouds exist
within the company firewall and they are managed by the enterprise.

Private clouds offer many of the same benefits that public clouds do with one major
difference: the enterprise is in charge of setting up and maintaining the cloud. The
difficulty and cost of establishing an internal cloud can sometimes be prohibitive, and the
cost of continual operation of the cloud might exceed the cost of using a public cloud.

Private clouds do offer advantages over the public variety. Finer-grained control over the
various resources making up the cloud gives a company all available configuration
options. In addition, private clouds are ideal when the type of work being done is not
practical for a public cloud, because of due to security and regulatory concerns.
 Hybrid clouds are a combination of public and private clouds. These clouds would
typically be created by the enterprise, and management responsibilities would be split
between the enterprise and public cloud provider. The hybrid cloud leverages services
that are in both the public and private space.

Hybrid clouds are the answer when a company needs to employ the services of both a
public and private cloud. In this sense, a company can outline the goals and needs of
services, and obtain them from the public or private cloud, as appropriate. A well-
constructed hybrid cloud could service secure, mission-critical processes, such as
receiving customer payments, as well as those that are secondary to the business, such as
employee payroll processing.

The major drawback to this cloud is the difficulty in effectively creating and governing
such a solution. Services from different sources must be obtained and provisioned as if
they originated from a single location, and interactions between private and public
components can make the implementation even more complicated. Since this is a
relatively new architectural concept in cloud computing, best practices and tools about
this pattern continue to emerge, and there could be a general reluctance to adopt this
model until more is known.

Back to top

SOA and cloud computing

Cloud computing predecessors are numerous and well-known technologies. There's utility
computing, grid computing, virtualization, hypervisors, and a hosts of others. One technological
concept that doesn't always enter the cloud conversation (but definitely should) is SOA. Service
Oriented Architecture has played a role in enabling cloud computing to become what it is today,
and it also should play a significant role in the evolution of cloud computing.

In many ways, cloud computing can be seen as an extension of SOA past applications and into
application and physical infrastructure. As enterprises and cloud providers look to provide cloud
solutions, their basic goal will be to enable the enterprise IT infrastructure as a service. The
lessons that have been learned in order to integrate and provide enterprise applications as discrete
services should also be applied as the infrastructure layers are organized and provided as
services. The application and physical infrastructure, much like applications in SOA, must be
discoverable, manageable, and governable. Ideally, much like with SOA, open standards will
evolve that dictate how the services are discovered, consumed, managed, and governed. These
standards would sum up the entire lifecycle of a cloud solution.

Figure 3 captures the idea of the three-layered cloud approach, and it shows how each of those
layers are essentially offering services to an overall SOA. In some cases, the services in the
bottom two layers are presented as part of an SOA, but the important part is that you recognize
the service-based approach to all layers of the cloud.
Figure 3. Cloud services

Back to top

Cloud matters to development

If you are a software developer or tester, you might think that this all sounds great but aren't
quite sure if it matters to you. After all, this is for administrators, right? This is a common first
opinion, but it doesn’t consider some clear benefits that cloud computing can provide
development and test teams.

For example, one of the biggest inhibitors in both test and development is the ability to acquire,
deploy, configure, and host environments in which to perform development unit testing,
prototyping, and full product testing. Cloud computing solutions can be used to rapidly create
and host such environments, removing the burden from test and development teams and putting
the problem within the realm of the cloud. For development teams, this means that things like
continuous code integration and prototyping become more easily achievable, since product
updates and new code can be tested with relative ease. For test teams, more time can be spent
testing the quality of a product, and less time is invested in enabling the testing.

In addition to providing runtime environments for development teams, there is another area of
the cloud aimed squarely at developers. Tools as a service, a subset of SaaS, is the idea that
development tools can be offered in the clouds. IDEs and simple code editors become hosted
pieces of software that are accessible to developers with an Internet connection. This eliminates
the need for developers to have local IDEs and corresponding licenses on every machine they
own. As a developer, you can probably understand the potential value derived from being able to
access common development environments from any machine at any time.

There is yet another impact of cloud computing on developers. It should be a clarion call for
developer's to embrace standard programming model APIs when at all possible. All developers
strive to be model programming citizens, adhering strictly to standards, but most have probably
strayed from time to time. Perhaps you strayed because a proprietary API gave you some
tangible benefit like performance; in another case, maybe you just wanted to "get it working." In
the cloud, any deviance from standard APIs is especially dangerous, and the reason for this is
fairly clear. Although consumers know they are getting a service they requested from a cloud
provider, they might not be aware of the implementation details of that service.

For example, consider requesting a J2EE™ application server service from a cloud provider. The
cloud provider produces the application server service, but you might be completely unaware of
what vendor's server you are receiving unless you negotiated a specific agreement with the
provider. Any application you choose to deploy onto the provided server should be free of
vendor-specific code, because you might end up with an application server implementation that
you weren’t expecting.

Back to top

Tooling for the clouds

A major component in cloud computing touched on above is tooling. In many ways, this might
be the most critical to the success of a cloud computing solution. There is significant technology
present in the marketplace to deliver cloud computing solutions, but these technologies are often
difficult to deliver due to a lack of comprehensive, understandable tooling.

Consider the application services layer in the cloud. Tooling in this layer could provide an
environment that assists with cloud application development, and it should provide the means to
package and deploy the application to a cloud infrastructure. We know that there are already
many such tools that fit this description, but the problem is that they are nearly always tied to the
cloud provider's infrastructure. Open standards are key to getting the most power and flexibility
from this tooling. Developers cannot afford to incur the costs of learning new tools every time
they switch cloud infrastructures; further, development shops cannot continually incur the cost of
rewriting applications because they switched cloud infrastructures. For this reason, the tooling
should aid application development, packaging, and deployment in a way that makes the finished
project portable across multiple cloud infrastructures.

Tooling also has a very clear role in the infrastructure services layer. Building out the
infrastructure for a cloud is not a trivial process. All of the physical assets for a cloud provider,
whether that provider is internal or external, need to be considered such that the right physical
resources are allocated to the cloud. Tools in this space should help companies visualize their IT
assets so that no resources are left out of consideration for the cloud. However, it won't be
enough to provide a visualization of the assets to the cloud constructor. The tooling in this space
should offer some bit of intelligence toward the creation of the cloud. In the past, IT
administrators have had a tough job of trying to match expected demand to physical resources.
This has led to the problem of under-utilization of resources, and this issue is a huge catalyst for
the cloud. Tools should guide users through the physical makeup of the cloud based on the
expected demand characteristics of the system.
Back to top

Summary

Cloud computing is poised to be a significant player in the tech industry now and in the
foreseeable future. In its ultimate form, it will provide the means for IT to be delivered to
consumers as a service. The number of products and services offerings in the cloud computing
space continues to grow and underscores the fact that it is where things are heading. We are
excited for the opportunities cloud computing presents our WebSphere developers, and in
subsequent articles we will discuss what some of those opportunities are and look at some of the
WebSphere solutions that are moving cloud computing from an idea to bottom-line returns for
enterprises.

You might also like