Tuesday, September 25, 2007

SOA and Metadata: Where you can Put It

This is a sequel to an earlier posting in which I described our developers drowning in metadata. Some basic governance has stopped it getting out of hand but more work has to be done as we adopt SOA. Todd Biske unknowingly describes our organisation accurately in his posting:

Organizations that are solely focused on design time discovery of services still wrestle with whether they even need a registry/repository prior to reaching some critical mass of services.

Here I present some brief insights into the metadata repository and service registry as a start to some research into what my organisatoin needs and when we might need it.

It is easy to focus on reuse as the main benefit of a repository but there are other reasons a repository is valuable.

Even without reuse, meta data can provide substantial benefits, namely system-wide change management and impact assessment.(Ambrosio)

There are a number of ways of classifying the metadata associated with SOA. We have already looked at the runtime and design time metadata. Some metadata is focussed on providing enterprise information while other metadata is provide for a particular solution. With good governance however solution metadata becomes part of the enterprise metadata assets and is given every chance of being reused. Metadata can be structured or unstructured. Cardwell discusses unstructured "tag-and-post" XML approaches and structured XSDs (XML Schema Descriptions).

The SOA Practitioners Guide discusses in detail what a SOA repository should provide. It summarises:

The SOA repository is the system of record for all enterprise metadata, service definitions, and dependencies. All metadata generated by the tools used by the architect/designer is uploaded to the SOA repository

Below is list from Stefan Tilkov of what you might find in the repository to assist design development and Governance.

  • What services/operations are available?
  • What is the message format?
  • Which versions? (What changes?)
  • Who is responsible?
  • Who uses which service?
  • What is the impact of change?
  • Are services reused?
  • Is documentation & usage compliant?
  • Are SLAs being met?

The SOA Practitioners Guide is more specific the list provided there is:

  • SCA models, BPEL, XPDL, JPD, and WSRP
  • business processes, business rules, policies, and services
  • architecture framework documents, enterprise and application models, and standards
  • Source code
  • Product specific metadata for configuration as well as service execution
  • Java documents
  • Release notes
  • network topology
  • service deployment network
  • service dependencies and SLAs along with CMDB for capacity planning and network topology development
  • Database Schemas
  • CWM (metadata modeling notation of data warehouse) and XMI
  • SLAs, QoS, and runtime performance metrics

The following list provided by Tilkov is metadata that is checked at runtime:

  • What is the service endpoint (address)?
  • Is a service running?
  • Can consumer and provider policies be matched appropriately?

This runtime information can be either be stored in the service itself and made available through WS-MetadataExchange or be recorded in a service registry. In general a service registry is for runtime metadata and uses more structured metadata. The design time metadata is added to the repository and can be a combination of structured and unstructured metadata.

The SOA Practitioners Guide explains that

The service registry is based on UDDI and the system of record for all deployed services. It contains metadata including service definitions, service dependencies, and service interfaces.

Metadata has been played an important role in software development even before the advent of SOA. Part of the importance of Enterprise Architecture is to foster reuse and this is also the goal of SOA. The runtime use of metadata in SOA is significant because it assists in the loose coupling that is its hallmark. To best achieve the reuse in SOA is important to provide an effective repository and good governance.

References
Ambrosio, Joanna, The next step for meta data: Application integration http://www.adtmag.com/article.aspx?id=8838&page, 2/1/2004

Ballinger, Keith (and 21 other authors), Web Services Metadata Exchange (WS-MetadataExchange), http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/ws-mex/metadataexchange.pdf

Biske, Todd, Is Metadata the center of the SOA technology universe?, http://www.biske.com/blog/?p=268, September 13th, 2007

Cardwell, Rob, Metadata Challenges in a SOA Environment, http://www.afei.org/5af3/documents/RobCardwell.pdf, September 13, 2005

Durvasula et al., SOA Practitioners Guide, Sept 2006, http://colab.cim3.net/file/work/SOACoP/2007_05_0102/SOAPGuide/

Tilkov, Stefan, The Central Role of Registries: Managing SOA Metadata, http://www.innoq.com/blog/st/presentations/2006/20060921_The_Central_Role_of_Registries.pdf, 2006

No comments: