Uniformity and Translation
In my post yesterday about Agile Architecture, I emphasised the role of standards. While I think that standards are crucial, I don’t believe that every system, service and application should necessarily implement the standard format for data representation – provided that whatever they do use can be translated to the standard. It may sound like more effort to have everything implement translators that translate from an internal representation to the standard format – aka the Canonical Data Model. However, taking this approach leads to greater agility since each individual system, application or service can evolve independently – any changes are local and contained unless they genuinely have a wider scope. If they do have a wider scope and the standard format needs revising, it is possible (and desirable) that translators will shield other systems from potential impact (do give some thought to versioning before you find yourself needing to revise your enterprise data format – I’d suggest you consider building in support for side by side versioning from day one and have a policy in place for deprecating old versions with adequate notice provided to affected parties.) What this all means is that you only have to change what needs to change. Which means that you can respond more quickly and effectively to change.