Thursday, January 04, 2007

SOA, Mashups and the importance of Virtual Services

With all the talk of SOA and Mashups and SOA and Ajax its nice to see that the general consensus is that SOA and Web 2.0 work well together.

With this in mind I thought I'd revisit something from the SOA Book and the OASIS paper around virtual services. The concept of virtual services is pretty simple
Virtual Services should be used where a collection of internal services is combined to provide an external view for a customer, thus creating a "virtual service" that is one which provides no direct business function but which offers a facade over those services.[...] Virtual Services therefore provide a way to indicate where business logic can be co-ordinated and potentially simplified.
As people are beginning to look more at Ajax and Mashup applications on top of SOA infrastructures I thought it was worth going over some of the guidelines and rules for what virtual services are and how they should be used.

The first point is that a virtual service is not a trivial thing they can be immensely complicated beasts in their own right, for instance a voice based processing interface and can do some fairly complex aggregation of information. This is however different from actually handling the processing of the information itself. So a virtual service should be pulling in information from various sources, creating the most effective interface, whether via REST, WS, Ajax, Flex or something else and then delivering that to its consumers. So some basic rules for Virtual Services
  1. No business process should be managed in a virtual service
  2. No transactions should be managed in a virtual service
  3. No comparison based validation of content should be done, only validation against data format (schema)
  4. Virtual Service should be focused on the consumers view of the service
  5. Virtual Service should be subject to "light touch" management
  6. Virtual Service should be focused on the presentation of information and not its processing
  7. Always enable mediation to be done between the virtual service and the services it consumes
Think of these Mashup applications as virtual service which contain the page flow and the information aggregation and representation but which forward the information for processing to the "back-end" services. In effect the Mashup is the bloke on the till at Burger King and the services are the people behind the bin flipping burgers.

Technorati Tags: , , ,