DDD.共享内核?还是纯粹的事件驱动的微服务?

Cok*_*aka 4 domain-driven-design bounded-contexts microservices

我将我的系统分解为(至少)两个有限的背景:学习设计和调查计划.

在研究设计背景下有一个名为"主题"(面试的潜在主题)的概念.我们还维护该领域的受试者和人群之间的关联.

现在,在调查计划中,我们还需要(一些)关于该主题的信息(例如:用于计划访问,或者甚至用于预期选择的问卷,以防该受试者所属的人口事先已知).

所以,在这两种情况下我都需要这个"主题".

我应该采取什么方法?有一个共享内核,正如Eric Evans DDD一书中所解释的那样?我不介意(至少现在)让两个上下文共享同一个数据库.

在此输入图像描述

或者......我应该去纯粹的微服务吗?含义:这两个不能/不应该共享数据库...,在这种情况下,我可能必须通过事件传递去镜像/复制路由:https://www.infoq.com/news/2014/11 /共享数据-有界上下文

对于上述情况,有关哪一个更好的想法?

谢谢!

Con*_*enu 7

我建议您选择事件驱动的解决方案,但不一定使用微服务。您可以构建一个事件驱动的整体架构,以便花费更少的时间来同步两个模型。当应用程序变得太大时,您可以将整体拆分为微服务。您可以使用 CQRS 将模型拆分为写入和读取。如果您使用事件源,事情会变得更加有趣。

根据我的经验,通过共享内核,模型成为上帝对象,一刀切的对象。


Ser*_*ets 7

微服务的上下文是分布式系统.在任何其他情况下,它可能是矫枉过正.共享内核最终将分裂.通常就是这种情况.你可以从它开始.没有错.但是,它不会留在那里.