Again I am participating in a project that must decide to use a Canonical Data Model or not. In theory this is generally a good idea as already described by Wolf's Enterprise Integration Patterns. Does this also hold for a SOA? Yes when we must believe Thomas Erl, in fact it is one of his SOA pattern (Canonical Schema)
* Data reuse between Services within the same Service Inventory
We all know the advantages
* Less transformation needed (this only holds when you have NxM relations)* Data reuse between Services within the same Service Inventory
What do others say?
Steve Jones describes three ways in his blog to setup a CDM. In Common demoninator (1) the minimum set of data that can be used to effectively communicate between areas on a consistent basis. The goal here isn't that this should be used on 100% of occasions but that it represents 70-80% of the interactions. In a Superset (2) the goal is to capture a canonical form that represents 100% of the possible interactions between services. Thus if a service might need 25 fields of product information then the canonical form has those 25 fields. The last one is the Enterprise beast (3) and this one creates a single data model that represents not only the superset of interactions, but the superset of interals as well.And what do I think?
- I do not see it happen to get one big enterprise model.
- Try to make a CDM per business domain. And use the data attributes that really are necessary. This makes you think good about the model and will cut out the bad fruit
- Make use of XML Schema to define the data entities and do not CSV,TXT or other non-standard formats
- Make a document that will describe and defines the data entities so that everybody has a good understanding of the entities.
- Make the data available to others
Reacties
Een reactie posten