Sie sind auf Seite 1von 7

Cloud computing for the enterprise: Part 1: Capturing the cloud http://www.ibm.com/developerworks/websphere/techjournal/0...

Cloud computing for the enterprise: Part 1:


Capturing the cloud
Understanding cloud computing and related technologies

Level: Introductory

Dustin Amrhein, Staff Software Engineer, IBM


Scott Quint, Cloud Computing Technology Evangelist, IBM

08 Apr 2009

Looking back to our recent technological past, it’s clear that the cloud computing movement has been
coming in the time since distributed computing and its related technologies (like grid computing and
SOA) gained widespread adoption. Cloud computing is now here, but many still have questions about
this new technology. Part 1 of this article series discusses cloud computing in general, then dissects the layers of
the cloud, presents the different cloud types, along with their benefits and drawbacks, and explains why this
movement is important for enterprise developers.

From IBM WebSphere Developer Technical Journal.

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.

1 of 7 7/21/09 2:01 PM
Cloud computing for the enterprise: Part 1: Capturing the cloud http://www.ibm.com/developerworks/websphere/techjournal/0...

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

2 of 7 7/21/09 2:01 PM
Cloud computing for the enterprise: Part 1: Capturing the cloud http://www.ibm.com/developerworks/websphere/techjournal/0...

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.

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

3 of 7 7/21/09 2:01 PM
Cloud computing for the enterprise: Part 1: Capturing the cloud http://www.ibm.com/developerworks/websphere/techjournal/0...

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.

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

4 of 7 7/21/09 2:01 PM
Cloud computing for the enterprise: Part 1: Capturing the cloud http://www.ibm.com/developerworks/websphere/techjournal/0...

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.

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

5 of 7 7/21/09 2:01 PM
Cloud computing for the enterprise: Part 1: Capturing the cloud http://www.ibm.com/developerworks/websphere/techjournal/0...

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.

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.

Resources
Learn
Cloud Computing: Gain access to your Applications from anywhere, at any time

Cloud Computing Journal A collection of stories, blog entries, and general information in cloud computing.

Is there value in cloud computing?

IBM developerWorks WebSphere

Discuss
Blog: A view from the clouds: Cloud computing for the WebSphere developer

Space: Cloud Computing Central

WebSphere Cloud Computing for Developers community discusses the cloud computing landscape as it relates to
WebSphere developers.

Group: Google cloud computing discussion group

Follow us on Twitter

About the authors


Dustin Amrhein joined IBM as a member of the development team for WebSphere Application Server. While in that
position, Dustin worked primarily on Web services infrastructure and Web services programming models. In addition, Dustin
worked on the development of a RESTful services framework for Java runtimes. In his current role, Dustin is a technical
evangelist for emerging technologies in IBM’s WebSphere portfolio.

Scott Quint has been at IBM since 1996. He's been a developer, Lead Engineer, Chief Engineer, Quality Assurance Lead and
Designer, Senior Consultant and Project Manager. Most recently Scott was a Lead Engineer for WebSphere Virtual Enterprise
and is now a Cloud Computing Technology Evangelist.

6 of 7 7/21/09 2:01 PM
Cloud computing for the enterprise: Part 1: Capturing the cloud http://www.ibm.com/developerworks/websphere/techjournal/0...

Share this....
Digg this story del.icio.us Slashdot it!

7 of 7 7/21/09 2:01 PM

Das könnte Ihnen auch gefallen