“ 一个总司令,是一个集团军的统帅,拿起机关枪总不会胜过机关枪手,走到炮兵队操作大炮也不如炮兵。但作为集团军的总司令不要管这些,只要懂得运用战略便可以,所以整个组织十分重要。——李嘉诚”
战略设计, 也称为战略建模,是DDD概念体系中的一个核心。在DDD实施过程中, 战略设计是为了建立限界上下文(Bounded context)、统一语言(Ubiquitous Language)和上下文映射(Context Map), 期间有整个团队参与,团队包含有领域专家和技术成员。为了清楚地理解策略设计是干啥的,我们需要掌握刚才提到的这些概念。
限界上下文
限界上下文是DDD最重要的一个概念,可以说,在这个上下文中, 一个Domain才能明确地成立。
在我们构建业务系统过程中, 会因为不同的人使用含义不同的术语和句子,造成很大的困难。这也就是意味着,超出一定的场景后,看似平淡无奇的词语就有不一样的含义。
基于上面考虑,限界上下文主要是一个语义限定圈。
理解限界上下文的关键是要记住,每一个限界上下文中,只有它自己的统一语言。
后面随着Model的演进,我们会发现,有必要关联多个限界上下文, 这个关联也就是上下文映射。
统一语言
统一语言是在限界上下文里有效的,在限界上下文中, 业务模型的术语和概念定义清晰。为了维护有效的统一语言,咱们应该理解业务逻辑。
使用统一语言的好处,是可以将项目中涉及到的成员都有效地聚拢起来。统一语言不应该是只有领域专家才能理解,相反,应该是整个团队共同参与开发出来。统一语言也是应该是团队成员共同使用,且在软件模型中显式地表达。
上下文映射
利用上下文映射,我们可以方便地理解整个项目,也可以方便地表达不同限界上下文之间的关联。
为了正确地对业务建模,理解限界上下文之间的关系是相当重要的。
有以下多种限界上下文的关联关系:
共享内核
多个团队共有同一个上下文,这样可以减少代码冗余,不过,每一次变化都必须统筹考虑且通知到涉及到的所有团队。
使用者/提供者
这是一种调用者(下游)/服务提供者(上游)之间的关联关系,涉及到的团队持续集成。
尊奉
这是上下游团队协作的场景,不过这样的协作中,上游没有什么动力满足下游团队的需求。
伙伴
这样的场景下,团队之间相互依赖,需要维护良好的协作关系。
防腐层
这种场景下,服务的调用方(下游,downstream)跟上游交互中,为了保护自身的模型,新建了一个中间层。
除了上面的映射关系外,还有其它的上下文集成模型,如Open-host Service、Published Language、Separate Ways和Big Ball of mud(这个千万别特意使用).
---------
往期推荐
~~~~~~~~~~~~~
长按二维码,关注公众号
一起推进电商业务信息化