title: DDD. Shared kernel? Or pure event-driven microservices?
body: <p>I'm breaking my system into (at least) two bounded-contexts: study-design and survey-planning.</p>
  
  <p>There's a concept named "subject" (potential subject for interviewing) in the study-design context. We also maintain associations between subjects and populations in that domain.</p>
  
  <p>Now, in the survey-planning, we also need (some) information about the subject (for example: for planning a visit, or even for anticipated selection of questionnaire, in case the population the subject belongs to is known beforehand).</p>
  
  <p>So, I need that "subject" in both contexts. </p>
  
  <p>What approach should I pick? Having a shared kernel, as explained in Eric Evans DDD book? I don't mind (at least for now) having the two contexts sharing the same database.</p>
  
  <p><a href="https://i.stack.imgur.com/FKtJ9.jpg" rel="noreferrer"><img src="https://i.stack.imgur.com/FKtJ9.jpg" alt="enter image description here"></a></p>
  
  <p>Or... should I go pure microservice? Meaning: those two can't / shouldn't share database..., and in that case I might have to go the mirroring / duplicating route through event passing: <a href="https://www.infoq.com/news/2014/11/sharing-data-bounded-contexts" rel="noreferrer">https://www.infoq.com/news/2014/11/sharing-data-bounded-contexts</a></p>
  
  <p>Any thoughts on which one is better, for the above situation?</p>
  
  <p>Thanks!</p>