First of all when you face a integration challenge the systems to be integrated are heterogeneous and use different data models (syntactically and semantically). So the data needs to be mapped from requester data to provider data.
1) Direct mapping, this results in n * m mappings (n=#requestors, m=#providers) and is very costly when a new provider or requester is added.
2) CDM, this results in n + m mappings
A CDM gives you:
- Message consistency
- Message maintainability
Possible implementations for CDM on ESB
Option 1: ESB translates
- The requestor and provider keep their own models
- Only CDM is used on ESB
- Existing services do not have to be changed (especially B2B)
- Only m+ n translations to be implemented and managed
- Easier to reuse mediation logic because it can use the CDM data instead of proprietary message models of the requestors/providers
- Processing overhead? ESB becomes single point of failure?
- The ESB is not responsible for data mapping
- Transformations run in the request's/provider's environment
- No transformations needed
- Services can adopt the CDM data model
- Reduces load and management on the ESB
- Mostly unrealistic, hard to reach consensus on model, applications are legacy and cannot be changed
- It may lead to complex maintenance and management of the transformations.