Skip to main content

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?

We have two products let call them X and Y, Product-X is established and has numerous clients over continents whereas product-Y we started developing few years ago and yet to enjoy any client.

We came across 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 there own and on a later date would like to sync them.

Now we will always host Product-X on our server farms however clients may or may not do that for Product-Y and host it locally on there own server farms. Myself is very new to designing systems I am calling these systems distributed systems which may not be the right term.

Both products are different will always have own database and structure regardless of whether they are in same environment or 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 happens in any system will push the data to other system using generic services and 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 asks each other for data or if they needed something they will only send a flag and get a call back 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

We have two products let call them X and Y. Product-X is established and has numerous clients over continents whereas Product-Y's development was started a 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 their own and on a later date would like to sync them.

Now we will always host Product-X on our server farms. However clients may or may not do that for Product-Y and host it locally on there own server farms. I 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 happening 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 ask each other for data or if they need something they will only send a flag and get a callback 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?
edited tags; edited title
Link
Christophe
  • 80.6k
  • 11
  • 132
  • 199

Is caching data between independent but interacting systems okay for this scenario?

Source Link

Is caching data okay for this scenario?

We have two products let call them X and Y, Product-X is established and has numerous clients over continents whereas product-Y we started developing few years ago and yet to enjoy any client.

We came across 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 there own and on a later date would like to sync them.

Now we will always host Product-X on our server farms however clients may or may not do that for Product-Y and host it locally on there own server farms. Myself is very new to designing systems I am calling these systems distributed systems which may not be the right term.

Both products are different will always have own database and structure regardless of whether they are in same environment or 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 happens in any system will push the data to other system using generic services and 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 asks each other for data or if they needed something they will only send a flag and get a call back 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