We have two products let call them X and Y,. Product-X is established and has numerous clients over continents whereas productProduct-Y weY's development was started developinga few years ago and it has yet to enjoy any client.
We came across a scenario where we have to sync data and actions between both systems. This can be done at any stage e.g. clients may use systems on theretheir own and on a later date would like to sync them.
Now we will always host Product-X on our server farms however. However clients may or may not do that for Product-Y and host it locally on there own server farms. Myself isI am very new to designing systems so I am calling these systems distributed systems which may not be the right term.
Both products are different and they will always have their own database and structure regardless of whether they are in same environment or in client's server farm.
Example
- Synching data based on events, e.g. if someone creates something in Product-X then it needs to be created in Product-Y too but following different logical steps and same for when something is created or updated in Product-Y.
Possible Solution
Any operation happenshappening in any system will push the data to the other system using generic services and the other system will decide what to do with it.
Create a cache of data on both ends e.g. in SQL Tables. This means both system will never going to asksask each other for data or if they neededneed something they will only send a flag and get a call backcallback with data.
Both systems will have endpoints (WCF services) to connect to each other.
Question ?
- Is it okay to keep a cache of data if not then what would be the right design for this scenario?