在架构感想我谈到了微服务架构。微服务架构包含2个维度:技术维度和业务维度。技术维度交给基础架构设计者和微服务框架保障;业务维度的关注点是领域驱动设计所擅长的。
何为领域驱动设计?
领域驱动设计是一种方法论,建立以领域为核心驱动力的设计体系。将要解决的业务概念和业务规则转换为软件体系中的类型及类型的属性和行为,通过合理运用面向对象的封装、继承、多态等设计要素,降低系统业务复杂性,且更具扩展性。
我们把领域驱动设计设计阶段划分为:战略设计阶段和战术设计阶段。
在战略设计阶段,从问题域和架构2方面考虑。问题域包括:核心领域、子领域;限界上下文、上下文映射。架构方面包括:分层架构、六边形架构、CQRS(Command Query Resonsibility Seperation)模式
在战术设计阶段,对每个限界上下文进行设计,用领域模型表达复杂的领域知识,模型要素包括:实体、值对象、聚合、领域服务、领域事件、工厂、资源库、应用服务。
下面的简略图帮助我们理解战略设计和战术设计。