Microservices – Compatibility with Master Data Management

microservices

My understanding is that separate data store per service is a best practice in microservices architecture. This Nginx article mentions that, but it goes on to advocate a Master Data Management system for ensuring consistency of data across disparate data stores. How can both coexist peacefully? It seems to me that each individual service would be competing with the MDM solution for "owning" the rights to create/update/master data.

I'd love to hear from anyone that has an MDM solution plus separate data store per service. What MDM tool(s) are you using? Doesn't each service "master" its own data – e.g., shouldn't Order data be written ONLY via the Order microservice? If the MDM solution detects a problem with regard to data consistency around Order data, does it instruct the Order service to reconcile it – or does this happen in the MDM tool?

Also, how do you stand up an MDM solution without introducing undesirable coupling between services and the MDM solution? Teams developing services should be able to change schema as needed, but an MDM solution would need to know the intimate details of schema and thus be tightly coupled right?

Best Answer

Question: what is the benefit of implementing a microservice (uS) infrastructure plus having a huge MDM system on top/in parallel?

If the different uS do hold all relevant data and do own that data in the sense of being really responsible and the "master"-system for that data, then there is no point in having that data within a MDM software on top.

Example: service A is the only responsible system for data A and cares about distributing that data A to any system in need of A. Service A could be a uS with a RESTful HA abstraction of its data. Now: let´s say a user recognizes an error in data A within system B. In order to maintain the data consistency and source of truth, that user is not allowed to change data A in system B, but he needs to change it in service A because service A is the master for data A.

In such an architecture: why would you need a dedicated MDM? What do you think?

Related Topic