Domain driven design DDD:在遗留系统中应用事件存储

Domain driven design DDD:在遗留系统中应用事件存储,domain-driven-design,event-sourcing,domain-events,Domain Driven Design,Event Sourcing,Domain Events,我们当前的系统是一个遗留系统,它不使用域事件。我们将开始发布域事件。 其他有界上下文将侦听这些域事件,但仅从我们开始发布时起,才会丢失所有过去的信息 那么,如何处理这个没有记录这些事件的遗留系统,但是我们希望在实现这个事件存储系统之前有一个过去的历史 根据数据库中的数据,找出发生了什么并尝试创建域事件(反向工程),这是一种好方法吗?我不会尝试对遗留系统的事件进行反向工程,除非有商业理由这样做,否则您的用例是否仅仅是为了适应使用事件建模的新方式?如果没有商业案例,这听起来像是白费力气 让一个单一的

我们当前的系统是一个遗留系统,它不使用
域事件
。我们将开始发布
域事件
。 其他有界上下文将侦听这些
域事件
,但仅从我们开始发布时起,才会丢失所有过去的信息

那么,如何处理这个没有记录这些事件的遗留系统,但是我们希望在实现这个事件存储系统之前有一个过去的历史


根据数据库中的数据,找出发生了什么并尝试创建域事件(反向工程),这是一种好方法吗?

我不会尝试对遗留系统的事件进行反向工程,除非有商业理由这样做,否则您的用例是否仅仅是为了适应使用事件建模的新方式?如果没有商业案例,这听起来像是白费力气

让一个单一的开始事件代表您的每个“事物”(即,如果您使用的是DDD概念,则为聚合)的当前状态,因为它们现在存在于遗留系统中,怎么样?然后在此基础上添加新事件

法律体系

NewDomainEvent

另一个新领域事件


…然后在重建状态时,应用LegacySystemStateCaptured事件以及其他事件。

回答得不错。我还想补充一点,根据
快照
实现,甚至可以将
LegacySystemStateCaptured
事件中的数据记录为快照事件,因为它可能包含所有典型数据。这将节省一次性事件,但它肯定取决于实现。是的,完全如此。请随意编辑我的答案,并附上以下建议:)