Just like service-oriented computing, cloud computing
is a term that represents many diverse perspectives and technologies.
In this book, our focus is on cloud computing in relation to SOA and
Windows Azure.
Cloud computing enables
the delivery of scalable and available capabilities by leveraging
dynamic and on-demand infrastructure. By leveraging these modern service
technology advances and various pervasive Internet technologies, the
“cloud” represents an abstraction of services and resources, such that
the underlying complexities of the technical implementations are
encapsulated and transparent from users and consumer programs
interacting with the cloud.
At the most fundamental level, cloud computing impacts two aspects of how people interact with technologies today:
Although cloud computing was
originally, and still often is, associated with Web-based applications
that can be accessed by end-users via various devices, it is also very
much about applications and services themselves being consumers of
cloud-based services. This fundamental change is a result of the
transformation brought about by the adoption of SOA and Web-based
industry standards, allowing for service-oriented and Web-based
resources to become universally accessible on the Internet as on-demand
services.
One example has been an
approach whereby programmatic access to popular functions on Web
properties is provided by simplifying efforts at integrating
public-facing services and resource-based interactions, often via
RESTful interfaces. This was also termed “Web-oriented architecture” or
“WOA,” and was considered a subset of SOA. Architectural views such as
this assisted in establishing the Web-as-a-platform concept, and helped
shed light on the increasing inter-connected potential of the Web as a
massive collection (or cloud) of ready-to-use and always-available
capabilities.
This view can
fundamentally change the way services are designed and constructed, as
we reuse not only someone else’s code and data, but also their
infrastructure resources, and leverage them as part of our own service
implementations. We do not need to understand the inner workings and
technical details of these services; Service Abstraction , as a principle, is applied to its fullest extent by hiding implementation details behind clouds.
With regards to service
delivery, we are focused on the actual design, development, and
implementation of cloud-based services. Let’s begin by establishing
high-level characteristics that a cloud computing environment can
include:
generally accessible
always available and highly reliable
elastic and scalable
abstract and modular resources
service-oriented
self-service management and simplified provisioning
Fundamental topics
regarding service delivery pertain to the cloud deployment model used to
provide the hosting environment and the service delivery model that
represents the functional nature of a given cloud-based service. The
next two sections explore these two types of models.
Cloud Deployment Models
There are three
primary cloud deployment models. Each can exhibit the previously listed
characteristics; their differences lie primarily in the scope and access
of published cloud services, as they are made available to service
consumers.
Let’s briefly discuss these deployment models individually.
Public Cloud
Also known as
external cloud or multi-tenant cloud, this model essentially represents a
cloud environment that is openly accessible. It generally provides an
IT infrastructure in a third-party physical data center that can be
utilized to deliver services without having to be concerned with the
underlying technical complexities.
Essential characteristics of a public cloud typically include:
homogeneous infrastructure
common policies
shared resources and multi-tenant
leased or rented infrastructure; operational expenditure cost model
economies of scale and elastic scalability
Note that public clouds can
host individual services or collections of services, allow for the
deployment of service compositions, and even entire service inventories.
Private Cloud
Also referred to as
internal cloud or on-premise cloud, a private cloud intentionally limits
access to its resources to service consumers that belong to the same
organization that owns the cloud. In other words, the infrastructure
that is managed and operated for one organization only, primarily to maintain a consistent level of control over security, privacy, and governance.
Essential characteristics of a private cloud typically include:
heterogeneous infrastructure
customized and tailored policies
dedicated resources
in-house infrastructure (capital expenditure cost model)
end-to-end control
Community Cloud
This deployment model
typically refers to special-purpose cloud computing environments shared
and managed by a number of related organizations participating in a
common domain or vertical market.
Other Deployment Models
There are variations of the previously discussed deployment models that are also worth noting. The hybrid cloud, for example, refers to a model comprised of both private and public cloud environments. The dedicated cloud
(also known as the hosted cloud or virtual private cloud) represents
cloud computing environments hosted and managed off-premise or in public
cloud environments, but dedicated resources are provisioned solely for
an organization’s private use.
The Intercloud (Cloud of Clouds)
The intercloud is not as much a deployment model as it is a concept based on the aggregation of deployed clouds (Figure 1).
Just like the Internet, which is a network of networks; intercloud
refers to an inter-connected global cloud of clouds. Also like the World
Wide Web, intercloud represents a massive collection of services that
organizations can explore and consume.
From a services consumption
perspective, we can look at the intercloud as an on-demand SOA
environment where useful services managed by other organizations can be
leveraged and composed. In other words, services that are outside of an
organization’s own boundaries and operated and managed by others can
become a part of the aggregate portfolio of services of those same
organizations.
Deployment Models and Windows Azure
Windows
Azure exists in a public cloud. Windows Azure itself is not made
available as a packaged software product for organizations to deploy
into their own IT enterprises. However, Windows Azure-related features
and extensions exist in Microsoft’s on-premise software products, and
are collectively part of Microsoft’s private cloud strategy. It is
important to understand that even though the software infrastructure
that runs Microsoft’s public cloud and private clouds are different,
layers that matter to end-user organizations, such as management,
security, integration, data, and application are increasingly consistent
across private and public cloud environments.
Service Delivery Models
Many different types of
services can be delivered in the various cloud deployment environments.
Essentially, any IT resource or function can eventually be made
available as a service. Although cloud-based ecosystems allow for a wide
range of service delivery models, three have become most prominent:
Infrastructure-as-a-Service (IaaS)
This service delivery
model represents a modern form of utility computing and outsourced
managed hosting. IaaS environments manage and provision fundamental
computing resources (networking, storage, virtualized servers, etc.).
This allows consumers to deploy and manage assets on leased or rented
server instances, while the service providers own and govern the
underlying infrastructure.
Platform-as-a-Service (PaaS)
The
PaaS model refers to an environment that provisions application
platform resources to enable direct deployment of application-level
assets (code, data, configurations, policies, etc.). This type of
service generally operates at a higher abstraction level so that users
manage and control the assets they deploy into these environments. With
this arrangement, service providers maintain and govern the application
environments, server instances, as well as the underlying
infrastructure.
Software-as-a-Service (SaaS)
Hosted software
applications or multi-tenant application services that end-users consume
directly correspond to the SaaS delivery model. Consumers typically
only have control over how they use the cloud-based service, while
service providers maintain and govern the software, data, and underlying
infrastructure.
Other Delivery Models
Cloud computing is
not limited to the aforementioned delivery models. Security, governance,
business process management, integration, complex event processing,
information and data repository processing, collaborative processes—all
can be exposed as services and consumed and utilized to create other
services.
Note
Cloud deployment models and service delivery models are covered in more detail in the upcoming book SOA & Cloud Computing as part of the Prentice Hall Service-Oriented Computing Series from Thomas Erl. This book will also introduce several new design patterns related to cloud-based service, composition, and platform design.
IaaS vs. PaaS
In the context of SOA and
developing cloud-based services with Windows Azure. Figure 2
illustrates a helpful comparison that contrasts some primary
differences. Basically, IaaS represents a separate environment to host
the same assets that were traditionally hosted on-premise, whereas PaaS
represents environments that can be leveraged to build and host
next-generation service-oriented solutions.
We interact with PaaS at a higher
abstraction level than with IaaS. This means we manage less of the
infrastructure and assume simplified administration responsibilities.
But at the same time, we have less control over this type of
environment.
IaaS provides a
similar infrastructure to traditional on-premise environments, but we
may need to assume the responsibility to re-architect an application in
order to effectively leverage platform service clouds. In the end, PaaS
will generally achieve a higher level of scalability and reliability for
hosted services.