在我的组织中,我们正尝试基于Bounded Context (BC)
模式(Domain-driven design
的一部分)来设计微服务。当我们这样做时,我们还尝试使用另一种称为Context Mapping
的DDD模式,以更好地识别应用程序中的各种上下文,它们的边界和它们之间的关系。
所有这些都可以在白板上或一些在线绘图工具中完成。但是,我正在寻找一种方法来生成各种服务的完整图像、它们包含的聚合以及这些聚合之间的潜在关系(因为一个BC中的相同User
可能是另一个BC中的Customer
)。图4-10就是一个很好的例子。理想情况下,生成应该基于我们将维护的某些DSL或脚本,因为这种工作相当高级,并且上下文边界不会经常更改。例如,一个团队添加了一个新的聚合,或者开始从另一个服务中保存一个聚合的副本,他们更新脚本/DSL并重新生成图。
到目前为止我看过的解决方案:
- 上下文映射器——它不可视化每个BC/服务中的聚合,也不显示关系
- C4模型,第2级-我们已经使用它,所以它可以相当容易地添加每个容器的聚合的文本列表,但这不是它的目的(并且可视化不是最佳的)
- ddd有界上下文/微服务画布——它太详细了,不能真正用来查看全局
我想知道其他组织是如何以及是否这样做的,并寻找一些工具的建议,这将是有帮助的。
我认为用于事件风暴的格式在您的情况下,会话可能值得一看。一旦完成,它涵盖了所有领域事件、命令、参与者、读取模型、策略和外部系统。它还说明了聚合、事件等所处的有界上下文。可以在这里找到一个例子:https://medium.com/capital-one-tech/event-storming-decomposing-the-monolith-to-kick-start-your-microservice-architecture-acb8695a6e61
我知道这种格式主要用于领域探索,但根据我的经验,如果做得好(例如使用一些像Miro, Lucid之类的工具),它还可以提供很好的文档和概述系统中正在发生的事情。