Very unusually, I'm here to ask for advice. I'd like to share with you a design dilemma and get your feedback. Bottom line is I'm interested to hear in how you manage your strategies for data replication, when and why do you replicate (or perhaps you never replicate). I'm positing a very simple example, not necessarily reflecting a real business case.
Thanks in advance for your thoughts :)
Let's suppose that two software systems are involved in achieving some business capability, say assessing credit risk:
* A credit risk calculation module
* A customer information module
The business requirement is that customer's credit situation needs to be re-assessed every calendar month. So there is some job that runs each day that carries out the check on a subset of all the customers, such that the entire customer population is covered over the course of each month. Notifications of some sort will be raised for customers whose credit situation is not satisfactory.
The risk module needs customer information to perform its task, and there are multiple strategies for retrieving this information, such as:
* Invoke an API operation retrieve customer by ID against the customer module, on demand, each month
* Invoke a bulk API operation retrieve customers by list of IDs against the customer module, on demand, each month
* Maintain an exact copy of the customer information, and updates the copy whenever a change is made in the master, by subscribing to Customer Create and Customer Change events.
* Maintains a subset of the customer information, optimized and transforms to its needs, and updates the copy whenever a change is made in the master, by subscribing to Customer Create and Customer Change events.
* Other strategies?
There's a lot going on here:
* What the cadence of the data changes in customer module?
* How much does it cost to add storage?
* What are the implications of loss of synchronization between source and user
* How fault-tolerant can the risk assessment process be?
* more?
And:
* Does it make a difference if the two modules are supplied by one vendor or by two different vendors?
* Does it make a difference if there is an industry standard (e.g. TMF Open API) for the API operations and/or events?
------------------------------
Jonathan Goldberg
Amdocs Management Limited
Any opinions and statements made by me on this forum are purely personal, and do not necessarily reflect the position of the TM Forum or my employer.
------------------------------