- How Things Got Off Track
- SOA to the Rescue?
- What the Heck Is SOA, and Why Should I Care?
- SOA Meets Cloud Computing
- Defining Cloud Computing
- The Components of Cloud Computing
- The Dream Team of Cloud Computing and SOA
- What SOA Can Learn from Cloud Computing
- What Cloud Computing Can Learn from SOA
- Making the Leap
- Being Positively Disruptive
Defining Cloud Computing
While cloud computing is widely defined, we need a standard definition for the purposes of this book. The National Institute of Standards and Technology (NIST), Information Technology Laboratory, provides the most comprehensive definition of cloud computing thus far offered.
Cloud computing is a pay-per-use model for enabling available, convenient, on-demand network access to a shared pool of configurable computing resources (e.g., networks, servers, storage, applications, services) that can be rapidly provisioned and released with minimal management effort or service provider interaction. This cloud model promotes availability and comprises five key characteristics:
- On-demand self-service. A consumer can unilaterally provision computing capabilities, such as server time and network storage, as needed without requiring human interaction with each service's provider.
- Ubiquitous network access. Capabilities are available over the network and accessed through standard mechanisms that promote use by heterogeneous thin or thick client platforms (e.g., mobile phones, laptops, and PDAs).
- Location-independent resource pooling. The provider's computing resources are pooled to serve all consumers using a multitenant model, with different physical and virtual resources dynamically assigned and reassigned according to consumer demand. The customer generally has no control over or knowledge of the exact location of the provided resources. Examples of resources include storage, processing, memory, network bandwidth, and virtual machines.
- Rapid elasticity. Capabilities can be rapidly and elastically provisioned to quickly scale up, and rapidly released to quickly scale down. To the consumer, the capabilities available for rent often appear to be infinite and can be purchased in any quantity at any time.
- Pay per use. Capabilities are charged using a metered, fee-for-service, or advertising-based billing model to promote optimization of resource use. Examples are measuring the storage, bandwidth, and computing resources consumed and charging for the number of active user accounts per month. Clouds within an organization accrue cost among business units and may or may not use actual currency.
Note that cloud software takes full advantage of the cloud paradigm by being service oriented with a focus on statelessness, low coupling, modularity, and semantic interoperability.1 However, all cloud computing approaches are not the same, and several deployment models, while different, are still considered cloud computing:
- Private cloud. The cloud infrastructure is owned or leased by a single organization and is operated solely for that organization.
- Community cloud. The cloud infrastructure is shared by several organizations and supports a specific community that has shared concerns (e.g., mission, security requirements, policy, and compliance considerations).
- Public cloud. The cloud infrastructure is owned by an organization selling cloud services to the general public or to a large industry group.
- Hybrid cloud. The cloud infrastructure is a composition of two or more clouds (internal, community, or public) that remain unique entities but are bound together by standardized or proprietary technology that enables data and application portability (e.g., cloud bursting).
Each deployment model instance has one of two types: internal or external. Internal clouds reside within an organization's network security perimeter, and external clouds reside outside the same perimeter. For the purposes of this book, we focus primarily on public cloud computing, or the use of a public cloud provider or providers to host portions of our SOA. Many businesses will find that private clouds are a better solution for their situation, leveraging the benefits of cloud computing but within their firewall. Or, they may choose to leverage a mixture of public and private clouds, or a hybrid cloud. Finally, some may create semiprivate or community clouds, which are public clouds leveraged only by a closed group of companies or government agencies.
The message is that it is all cloud computing and all of these architectural options are available to you. The steps highlighted in this book are applicable to private, community, and hybrid cloud computing2 as well as to public cloud computing. We cover private clouds in a bit more detail in Chapter 12, "Moving Onward."