(1)DDD 是为了解决什么问题?
DDD是一种可以拉通多种不同业务角色一起参与复杂业务分析的分析方法,其具有兼顾战略与战术,具有明确的业务边界,符合微服务设计理念的特点。
DDD解决了复杂业务场景不易分析,不易统一思路的问题。
矛盾论看DDD:业务分析先找到问题域(我们要解决什么问题),再找到主要矛盾(核心子域)以及解决主要矛盾的基础(通用子域),集中精力解决主要矛盾
- 系统设计层面:解决如何微服务如何划分的问题,为划分服务边界提供了一套完备的思路
- 代码实现层面:提供了一套代码规范或者说开发模式,例如:实体跟值对象,实体更关注其唯一标识,而值对象应该更关注内部属性。
- 团队沟通层面:DDD提出了通用语言的概念,提供了分析方法,可以方便团队沟通。
DDD的事实效果:
增强可维护性、增强清晰边界,过程文档化
(2)DDD的适用场景有哪些?
DDD的使用场景:
1.复杂成熟业务场景,且具有较大的规模场景。一般进行DDD的业务具有较长的业务运行时间,对于业务模式流程相对比较清晰,业务足够复杂而参与人员角色众多,而需要统一的分析方法论和沟通语言。
2.DDD一般是整个公司层面,自顶向下思考问题,首先进行战略分析,随后进行战术分析,层次不够高,业务面不够广,边界划分的重要性并没有那么高
3.开展微服务化、中台化战略后的业务分析
做好DDD:
对于系统内外,思考清楚边界;系统内部,高内聚低耦合,变化收拢在聚合内部
(3)DDD 的优势和缺点是什么?
优势:
• 提供统一语言,便于统一不同角色对业务的理解、促进大规模业务分析成为可能;
• 面向业务的分析,技术产品设计可以与业务、人员、战略紧密结合,促进技术的业务化;
• 衔接业务与技术,避免技术为了技术而技术,促进技术的业务理解效果;
缺点:
• 需要理解相当多的概念,门槛较高、需要领域专家的参与,要求较高
• 缺少可操作的案例,执行起来往往无从下手
• 设计往往需要上升到战略层面,而大多数人缺少战略认知和战略决策权限
• DDD在开发中的落地,还未达到可以进入寻常百姓家的能力
(4)为什么近些年又重新火了起来?
重新火起来的原因
- 随着微服务的普及,DDD是微服务拆分的官方指导策略
- 成熟的中台设计(阿里),马后炮的跟DDD结合了起来,成为了中台拆分的指导思想
- 随着实践,逐步被众多互联网公司所接受,也逐步有了很多落地案例,至少说可以靠的上
- 随着软件的发展,业务越来越复杂,需要有战略层面的业务分析指导方法论