一、软件设计发展过程
软件架构模式大体上经历了从单机架构 -> 集中式架构 -> 分布式微服务三个阶段的架构演进。
在单机和集中式架构模式下,软件无法快速响应需求和业务的迅速变化,直到微服务架构时代的来临。微服务架构解决了单机和集中式架构的很多问题,比如扩展性、弹性伸缩性、小规模团队的敏捷开发等。
但是,带来好处的同时,微服务实践过程中也产生了不少争议性的问题:“微服务到底应该怎么拆分和设计才算合理,拆多小才叫微服务”,而微服务的边界历来也是最容易产生争议的地方。
二、什么是DDD?
2004年埃里克·埃文斯发表了《领域驱动设计》这本书,DDD(Domain Driven Design)由此诞生。
DDD核心思想是通过领域驱动设计方法定义领域模型,从而确定业务和应用边界,保证业务模式和系统架构模式的一致性。
DDD不是架构,而是一种架构设计方法论,它通过边界划分将复杂的业务领域简单化,从而设计出清晰的领域和应用边界,进而可以非常容易地实现架构演进。
DDD主要包括战略设计和战术设计两大部分。
- 战略设计主要从业务视角出发,建立业务领域模型,划分领域边界,建立通用语言的限界上下文,而限界上下文可以作为微服务划分的主要参考边界。
- 战术设计主要从技术视角