Starting with this post I'd like to delve a little deeper into the ideas I first started discussing in my talk entitled: "Service Capsules: A Language and Patterns Perspective on Service Design and Implementation". I first became interested in Speech Act Theory and more generally the Language Action Perspective of communication way back in the early part of my career as a Multi-Agent AI researcher at Sharp Laboratories of Europe in Oxford, England. Subsequently I ended up in the commercial world building and designing large scale distributed systems, mostly in the investment banking and securities trading industry. As fate would have it, these kinds of systems evolved into service-oriented architectures and my customers and I started to encounter very similar concerns to those I was investigating very deeply (if somewhat esoterically) as a researcher back in my Sharp Labs days. Simply put the concepts behind robust, reliable, semantically-rich conversations between autonomous, independent Agents do have a role to play in helping us understand how to better design and build Service-Oriented Architectures today. I'm trying to figure out how all of this comes together - it's a "journey" as they say - and this Blog is where a lot of that journey will unfold. Twende Safari!
We're increasingly seeing SOA-based line-of-business applications become one of the basic building blocks of process-oriented enterprise web architectures. Additionally we're seeing practice-oriented consumer "Web 2.0-like" applications becoming more popular even in the enterprise (see Mike Platt's article in the Microsoft Architecture Journal, Issue 12). So it's really beginning to make sense to think about Web 2.0 and SOA evolving into a mashed up, if not unified, architecture. To quote Mike Platt:
"In this joint SOA and Web 2.0, or software and services world, services will be supplied from service suppliers and / or enterprises and will be composited into new services or be mashed up on the device to produce secure, flexible and adaptable systems. So for example an Enterprise search system could include internet search from a SaaS provider, a internal search system running on an organizations servers and a local search on individual devices to provide a composite search experience.
"Microsoft strongly believes that a "one size fits all" approach will not be appropriate for the organization of the future and the enterprise will include individual device, server and SaaS-supplied services in a client server service configuration running both server software and Software as a Service to provide a complete service platform.
"On top of this service platform there are a number of cross platform functions that are required such as identity and relationship management, search and discovery services, communication and collaboration services and content creation and management services. These provide user, consumer, partner and enterprise support across the complete Software + Services or Services platform layer for areas such as search, email, messenger, blogging and wikis. These cross service platform functions build a federated infrastructure layer across the organizationally distributed services platform and use one another to provide a complete service platform."
The evolution towards a complete service platform as described by Mike sounds compelling enough because of the numerous possibilities that it opens up. What intrigues me however is, "What models do we have at hand to help bridge the interaction schism that'll inevitably exists between services within the service platform and between its Web 2.0, SOA and even human consumers?"; "How can we make it easy to understand the required orderly communication essential to have a meaningful "conversation" amongst participating services to achieve a desired outcome?"; "How can these conversations be modeled robustly and reliably to support both human and software services?" To help answer these questions I'd like to introduce the idea of a Service Capsule which is a service that combines business capabilities representing the stable elements of a business and what it does with communication patterns that are necessary to interact with them.
I'll develop this topic in more detail in subsequent posts. Please come back or subscribe to my RSS feed.