Thursday, April 22, 2010

SOA : Design Principles

The following service oriented principles should be applied to the extent possible so that the benefits of SOA can be realized.

1. Standardized Service Contracts
  • A SOAP Web Service has the following as part of the contract
    • WSDL
    • XSD
    • WS Policy
    • SLA (Service Level Agreement)
  • Service Contract is standardized through the application of design standards(contract first approach)
    • Standardized naming conventions(expressive)
    • Standardized data types(reduces the transformations between data types)
2. Loose Coupling
The different types of coupling are
  • Logic-to-Contract Coupling
    • Created when the "contract first" approach is followed
    • Tight coupling of Service Logic on the Service Contract
    • Positive
  • Contract-to-Logic Coupling
    • Created when the Service Contract is auto generated from the Service Logic
    • The Service Contract is dependent on the underlying Service Logic
    • Also, auto generation of schemas from the database tables
    • Negative
3. Service Abstraction
  • Hides the implementation details from the Service Consumers(to be hidden - includes technology, functional, programmatic logic and quality of service information)
  • This provides the freedom to evolve the service implementation as required.
4. Service Reusability
  • Services should contain and express agnostic logic so that they can be reused across the enterprise.
  • Achieving this is very important as the ROI is highly dependent on the degree of reuse achieved
  • Some of the design characteristics are
    • The Service is defined by an agnostic functional context
    • The Service Logic is highly generic
    • The Service Contract is generic and extensible
    • The Service Logic can be accessed concurrently
5. Service Autonomy
  • The level of control over the underlying runtime execution environment.
  • Task Services have less autonomy as they compose other services over which they have less control.
6. Service Statelessness
  • Stateless Services
    • Increase Service Scalability
    • Increase Service Reusability
    • Consume less computing resources
    • Orchestrated Task Services are expected to be stateful
    • Entity and Utility Services are generally stateless
7. Service Discoverability
  • Services are supplemented with meta data by which they can be effectively discovered
8. Service Composability
  • Services should be composable

    1 comment: