Most of us knew that the cloud was going to change the way we thought about the way we develop, deliver and operate applications, but few understood the profound and disruptive force that would swallow our industry at a mind boggling pace. We used to talk about web-years to describe the disruptive nature of the Internet; but web-years seem like a long time compared to cloud-years. Media, blogs, pundits and vendors pummel our information channels with their cloud messaging and it can be easy to think that there literally is nothing else happening.
Service Oriented Architecture
At the very least, I did not see the cloud coming when Rob High, Steve Graham and myself penned this 2005 whitepaper on IBM’s Service Oriented Architecture (SOA) Foundation. At that time applications and business processes were sprawling across enterprises with complex, monolithic interactions that were difficult to understand, riddled with side effects and connected by a hodge-podge of custom, often proprietary or unique serialization and protocols. This complexity was literally paralyzing enterprises: it could take years to roll out new features that businesses desperately needed to keep up with the new pressures of innovation around the Internet. We all learned with great pain the impact of the “web-year” on our organizations – IBM included.
SOA was derived from extracting the best practices of enterprise architectures and formalizing the thinking in a set of principles, technologies, reference architecture and products that could be brought to bear to build, and sometimes re-engineer our enterprise applications so that we could evolve them in agile, reliable and consistent manner. As a reminder, some of the key tenants of SOA are:
Service orientation. Coarse-grained tasks in our applications and business processes should be factored as services with a clear interface thatdescribes its purpose. Applications and business processes then become a composition of its dependent services.
Separation of concerns. The consumer of a service should not care about how the provider has implemented the service. This allows the provider to change the implementation, so long as the interface of the service is the same and allows the consumer to interact with the service in a language or application environment of their choosing.
Loosely-coupled. The consumer of service should not care where the service is hosted, and the provider should have the ability to move the service around wherever it makes the most sense for hosting. Virtual service endpoints provided through technologies like an Enterprise Service Bus create a level of loose coupling.
Standard connectivity. Applications connect to each other through standard protocols, which have clearly documented, predictable and architected behavior for both the service consumer and service provider.
Certainly much has been written about SOA, and there are myriad SOA related features and products offering to help implement SOA infrastructure to solidify these principles throughout enterprises. For more on IBM’s view of SOA, take a look at these SOA resources.
Irrespective of cloud initiatives, most enterprise customers are still engaged in building and extending their SOA applications, evolving and extending their systems of record, and in many cases connecting them to the new class of applications that implement what IBM calls systems of engagement.
Ok, SOA is not dead -- it is alive and well in our institutions. How then, you may ask, does SOA relate to cloud services? Cloud Services are in fact, the next logical extension of SOA. It is no accident that Infrastructure-as-a-Service, Platform-as-a-Service and Software-as-a-Service are synonyms for “cloud service.” Cloud Services build on the principles we pioneered in SOA, extending them to take advantage of the massive bandwidth improvements we’ve seen on the web in the past decade. Access to remote resources and features is no longer painful. and the web offers a viable platform for vendors to host a plethora of resources and applications as services. Cloud services have the following characteristics:
Consumer-centric lifecycle and self-service. SOA certainly defined service consumer and provider, but for the most part, that relationship is of one application to another. Like the system of engagement applications we build with cloud services, cloud services are themselves consumer-centric. Consumers of cloud services create their own “instance” of a service in a self-service fashion, formalizing the consumer’s usage of the service. It is the consumer that owns the service instance and controls its life cycle. Whatever infrastructure and middleware that is necessary to be “stood-up” to support the service instance is done so in an automated fashion and no support staff is required to be involved; which is atypical in enterprise shops today.
Multi-tenancy. In many cases, the service provider gives the illusion of unique instances through multi-tenancy. In principle, the service consumer should not be able to notice whether their service instance is isolated from other consumers. Resources that are associated with the service, like monitors, logs or management utilities, are tailored for the specific consumer and do not contain data from other consumers, even though the same middleware and infrastructure may be supporting many consumers.
Metered. Cloud services are metered and typically utility-based, pay-as-you-go billing. A variety of pricing models exist for metering from bytes stored, throughput or as simple as the number of APIs called in a certain period. Many services offer a variety of features and pricing, and quite commonly follow the freemium model, where a rudimentary service is free, with various steps or plans which offer better qualities of service for a fee. The notion of charge-back was acknowledged by SOA as a way to fund the shared services, but metering is a fundamental attribute of cloud services.
Accessible. Cloud services are typically available through normal Internet protocols, and in many cases, they are RESTful services. Inherited from SOA, standard protocols and well-defined interfaces and interactions of cloud services are essential for agility.
Scalable and Elastic. Cloud services give the illusion of infinite resources in such as a way that a consumer can choose to pay for on-demand as needed.
SOA enabled enterprises to cope with changes occurring in web-years; and cloud services enable consumers to cope with changes occurring in cloud-years. So, what happened to SOA? It is here, alive and well, continuing to serve as the fundamental architecture for our evolving system of records, but SOA is also the foundation powering our system of engagements in the cloud.
I am interested in hearing your thoughts on the synergy of cloud services and SOA – leave a comment here or tweet me up via @StephenKinder.