title: What's the best way of synchronizing data between decoupled systems?
body: <p>I have let's say 2 (but they'll become more in the future) fully decoupled systems: system A and system B.</p>
  
  <p>Let's say every piece of information on each system has an informationID. There's nothing stopping the informationID to be the same on different systems. What univocally identifies a piece of information across all systems is a Source-informationID pair.</p>
  
  <p>Let's say I need to export a piece of information from System A to system B. I then want to export the same piece of information from System B and re-import it into System A and I  need to be able to recognize that's the same piece of information.</p>
  
  <p>What's the best way of doing this in people's experience?</p>
  
  <p>This is what I am thinking to do:</p>
  
  <ol>
  <li>Setup a message bus between the
  systems with message queues.</li>
  <li>Setup endpoints for each system
  that will monitor changes and
  generate commands wrapped into
  messages that will be pumped
  into queues (for example
  when a piece of information is
  created/deleted/updated).</li>
  <li>Assign ranks to the endpoints
  relative to create/delete/update
  commands in order no to rely on
  system names but only on a general
  hierarchy - so that each system
  doesn't need to know about the
  others.</li>
  <li>Assign a treshold on
  update/delete/create command to each
  endpoint so that commands not
  meeting the treshold requirement
  will be filtered out and not
  processed</li>
  </ol>
  
  <p>This won't solve the fact that I still need to carry around originalSource+originalSourceID though.</p>
  
  <p>Any help appreciated.</p>