Understanding Services in Cloud Computing
When you have some of the background on what it means to take a service-oriented approach to architecting technology systems, you can begin to see the relationship between SOA and cloud computing. Services are important for cloud computing from both an infrastructure and an application perspective.
Service orientation permeates the cloud itself and the cloud serves as an environment that can host other services (either at technical or business levels). What does this mean?
On the one hand, cloud providers have built the cloud infrastructure on well-designed services with clearly defined black-box interfaces. These black-box services (think capacity, for example) allow the cloud to scale. The cloud infrastructure itself is service oriented.
On the other hand, companies building applications designed for the cloud tend to build them out as services; this makes it easier for customers and partners to use them.
Infrastructure as a Service (IaaS)
The Infrastructure as a Service layer offers storage and compute resources that developers and IT organizations can use to deliver custom business solutions. A cloud provider wants the provisioning capability associated with the IaaS to be designed as a modular service with published interfaces so it can be used for many different situations.
As a user of this capacity provisioning service, you don’t need to know how the provider is making the service happen; it is a black box to you. If the cloud weren’t service oriented, you’d have to figure out how to provision your application to the environment. With the cloud, you can use a single provisioning service.
Platform as a Service (PaaS)
The Platform as a Service layer offers development environments that IT organizations can use to create cloud-ready business applications. This is offered as a set of black-box services that lets developers build applications on top of the compute infrastructure. This might include developer tools that are offered as a service to build services, or even data access and database services, or even billing services.
In these situations, the principles of SOA (such as loose coupling and reusability) have been applied to IT infrastructure components that are delivered as cloud services to PaaS users. Developers in your organization may locate the platform services they need by referencing a service catalog.
Software as a Service (SaaS)
With Software as a Service, the provider hosts the software for you so you don’t need to install it, manage it, or buy hardware for it. All you have to do is connect to it and use it.
Don’t confuse SOA with SaaS. SOA is software designed as a service; SaaS is software managed and distributed as a service.
In all these models, companies will use a set of well-defined services that they can access through interfaces. Companies can leverage these services in many different ways depending on what problems they are trying to solve.