title: Normalized or Denormalized Data in Microservices and Service Composition
body: <p>So our development team has been working towards Microservices for the past 6-8 months and have picked up a lot of steam. </p>
  
  <p>We have experienced several <code>gotcha</code> moments in that time, and are humble enough to know that we are in for many more as we move closer to moving our platform to production.</p>
  
  <p>One area that I can't quite put my finger on is how we are to treat our data between our service boundaries. I hear a lot of statements form large companies that have successfully implemented Microservices, but I can never seem to get straight advice and reasoning.</p>
  
  <p><strong>Specifically, given two service domains  <code>User</code> and <code>Contacts</code>,and assuming that a <code>User</code> has a <code>Contact</code> object associated with it, what are the options for each of these two service domains in regards to managing their own data?</strong></p>
  
  <p><strong>Should the <code>User</code> have a <code>ContactID</code> stored with it, or should it store the entire <code>Contact</code> object?</strong></p>
  
  <p>I have seen many reliable service oriented development teams (Netflix,Amazon,Nike,etc) make statements such as the following:</p>
  
  <p><strong>"Normalization is the root of all evil..."</strong></p>
  
  <p><strong>"Break all that is shared..."</strong></p>
  
  <p><strong>"Share nothing..."</strong></p>