- 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
The Components of Cloud Computing
As cloud computing emerges, there is a lot of discussion about how to describe it as a computing model. Maturity models have been published and debated, and providers clearly have a model for their own products.
In attempting to better describe cloud computing, we came up with a "stack" of sorts, which logically considers each component of cloud computing and how the components interact. While clearly this model could be much more complex, it does not need to be. This stack explanation is a model for defining and refining the concept of cloud computing (see Figure 1.2).
Figure 1.2 The components of cloud computing make up a wide range of services you can leverage over the Web through a subscription arrangement. Most services that you can leverage from a data center can now be leveraged from the cloud.
While many in the industry can debate the components, there are 11 major categories or patterns of cloud computing technology:
- Storage-as-a-service
- Database-as-a-service
- Information-as-a-service
- Process-as-a-service
- Application-as-a-service
- Platform-as-a-service
- Integration-as-a-service
- Security-as-a-service
- Management/governance-as-a-service
- Testing-as-a-service
- Infrastructure-as-a-service
We go into more detail in Chapter 3, "Defining Clouds for the Enterprise," but it is useful to define them at a high level here.
- Storage-as-a-service (also known as disk space on demand), as you may expect, is the ability to leverage storage that physically exists at a remote site but is logically a local storage resource to any application that requires storage. This is the most primitive component of cloud computing and is a component or pattern that is leveraged by most of the other cloud computing components.
- Database-as-a-service (DaaS) provides the ability to leverage the services of a remotely hosted database, sharing it with other users and having it logically function as if the database were local. Different models are offered by different providers, but the power is to leverage database technology that would typically cost thousands of dollars in hardware and software licenses.
- Information-as-a-service is the ability to consume any type of information, remotely hosted, through a well-defined interface such as an API. Examples include stock price information, address validation, and credit reporting.
- Process-as-a-service is remote resource that can bind many resources together, such as services and data, either hosted within the same cloud computing resource or remotely, to create business processes. You can think of a business process as a meta-application that spans systems, leveraging key services and information that are combined into a sequence to form a process. These processes are typically easier to change than are applications and thus provide agility to those who leverage these process engines that are delivered on demand.
- Application-as-a-service (AaaS), also known as software-as-a-service (SaaS), is any application that is delivered over the platform of the Web to an end user, typically leveraging the application through a browser. While many people associate application-as-a-service with enterprise applications such as Salesforce SFA, office automation applications are indeed applications-as-a-service as well, including Google Docs, Gmail, and Google Calendar.
- Platform-as-a-service (PaaS) is a complete platform, including application development, interface development, database development, storage, testing, and so on, delivered through a remotely hosted platform to subscribers. Based on the traditional time-sharing model, modern platform-as-a-service providers provide the ability to create enterprise-class applications for use locally or on demand for a small subscription price or for free.
- Integration-as-a-service is the ability to deliver a complete integration stack from the cloud, including interfacing with applications, semantic mediation, flow control, integration design, and so on. In essence, integration-as-a-service includes most of the features and functions found within traditional enterprise application integration (EAI) technology but delivered as a service.
- Security-as-a-service, as you may have guessed, is the ability to deliver core security services remotely over the Internet. While the typical security services provided are rudimentary, more sophisticated services such as identity management are becoming available.
- Management/governance-as-a-service (MaaS and GaaS) is any on-demand service that provides the ability to manage one or more cloud services. These are typically simple things such topology, resource utilization, virtualization, and uptime management. Governance systems are becoming available as well, offering, for instance, the ability to enforce defined policies on data and services.
- Testing-as-a-service (TaaS) is the ability to test local or cloud-delivered systems using testing software and services that are remotely hosted. It should be noted that while a cloud service requires testing unto itself, testing-as-a-service systems have the ability to test other cloud applications, Web sites, and internal enterprise systems, and they do not require a hardware or software footprint within the enterprise.
- Infrastructure-as-a-service (IaaS) is actually data center-as-a-service, or the ability to remotely access computing resources. In essence, you lease a physical server that is yours to do with as you will and, for all practical purposes, is your data center, or at least part of a data center. The difference with this approach versus more mainstream cloud computing is that instead of using an interface and a metered service, you have access to the entire machine and the software on that machine. In short, it is less packaged.