去哪儿网领域驱动设计(DDD)实践之路

9,355 阅读6分钟

众所周知,领域驱动设计(DDD)的概念出自Evic Evans的《领域驱动设计:软件核心复杂性应对之道》。它是指通过统一语言、业务抽象、领域划分和领域建模等一系列手段来控制软件复杂度的方法论。

伴随着微服务的兴起,领域驱动设计(DDD)正在焕发青春,其价值被越来越多的业内人士重新发掘。那么,DDD在国内的发展现状如何?业务团队要了解DDD,应该如何上手?带着这些疑问,我们采访了去哪儿网技术总监王植萌。

▲去哪儿网技术总监 王植萌

国内DDD的实施现状

关于DDD的业务重塑,企业最关心的因素有三个方面:一、是否可以提升人效,降低整体成本;二、是否能够指导系统架构快速适应组织架构与业务架构的变化,保证技术与业务不脱节;三、是否能够促进产研融合,为业务的共同愿景发力。

重塑DDD可以让企业获得一个非常有用的领域模型和更好的用户体验,清晰的模型边界,以及更好的企业架构;企业业务得到更准确的定义和理解;领域专家可以为软件设计做出贡献;做出敏捷、迭代式和持续建模等。

即便DDD可以满足企业的诸多需求,但是仍有许多朋友对其价值收益感受不明显。其原因主要是DDD门槛高、概念多,体系庞大又抽象,再加上缺少实践经验和案例指导,很多开发人员对DDD望洋兴叹,面临DDD落地难的困境。

王植萌认为,“经过一年多的项目实践发现,DDD并不存在最佳实践。它是一套体系与原则,针对不同类型的业务领域,DDD实践方法和理念,以及资源投入的方式是不一样的。很多书本上都没有描述,需要通过实践来摸索总结。”

去哪儿网DDD的实践

在去年疫情时期,去哪儿网的高层提出“练内功”的理念。所谓,练内功的要义就是要让技术架构适应业务与组织结构的变化。当组织结构发生巨大的变化时,产研之间需要迅速融合产生竞争力。当发生较大的人员变动时,产研双方都有重新理解业务、梳理业务达成对业务领域一致认知的愿望。

早在2013年,去哪儿网就落地了敏捷开发。而DDD的理念与敏捷开发、极限编程的理念一脉相承。可以说,在DDD之前,敏捷开发是去哪儿网实现产研融合的重要方法,只是DDD体系要比敏捷开发更为完善和厚重。所以,去哪儿网选择在项目中落地DDD。

在落地DDD的过程中,去哪儿网也面临着重重困境。没有与产品树立共同愿景,共同做战略设计的习惯,导致产研双方无法实现共同愿景,从而导致DDD做成了一次消耗更多人力的技术重构。此外,事件风暴需要反复做,但是用纸来保持事件风暴信息容易丢失且成本高昂。

为了解决这些问题,去哪儿网采用BeeArt的工具,来做事件风暴结果储存的工具,保证了事件风暴结果可分版本的保存与使用,大幅度提升了事件风暴的质量,提高了DDD实践的成功率。

对于DDD业务重塑完成后,如何保持领域不被外部入侵?王植萌表示,“我们通过标准化API的方式,去哪儿网实现了一套标准的API接入规范和工具,有效保证了API对于限界上下文边界的隔离性,防止限界上下文被入侵。”

DDD的成功落地给去哪儿网带来最直观的价值是:去哪儿网从整体上开始重视设计工作,细化设计的流程。增进了产研间的互信,双方对需求的工时预期趋于一致,对于需求的错误理解大大减少。在解决复杂度高的问题时,DDD给予了非常必要的理论指导,能够解决复杂领域中不易厘清的不合理架构,并加以改进。

总的来看,去哪儿网DDD实践成功后,整体上增加了领域专家,提高了产研沟通效率,响应速度也逐渐变快。在技术侧,去哪儿网掌握了业务的核心玩法,计算过程趋于标准化。在产品侧,去哪儿网专注业务策略,解决了已有的痛点。在运营侧,整个业务过程可视化,提升问题的处理效率,减少需要反馈的问题。

如何快速上手DDD?

业务团队可以先从工作坊,包括Event Storming或Domain StoryTelling着手,感受DDD带来的好处。然后,再研读DDD战略的部分信息,并且优化和整合到自己的业务知识库里,理解如何更好地将自身业务知识传递给团队,从而降低团队间的沟通成本,提高协作效率。

关于上手DDD的书籍,王植萌推荐了欧创新老师的《中台架构与实现-基于DDD和微服务》,并作出很高的评价,“这本书是近些年来,DDD领域的一部佳作。它将DDD所涉及的疆域由与产品的共同愿景,一直延伸到具体的代码落地实现,是一部纵贯全局的划时代的作品。”

王植萌指出,有兴趣在DDD领域有所发展的架构师可以花7~8个小时阅读《领域驱动设计精粹》一书,然后再上B站去哪儿网的Qunar技术大本营,找到去哪儿网的系列教学视频进行学习,其中有手把手的挂盘讲解事件风暴过程的环节,下一步就是要亲自做一次DDD思想指导的业务重塑。

写在最后

通过去哪儿网的实践证明,DDD完全可以高成功率的落地。随着教材质量的提升、工具的逐步完善、实践经验的不断积累,DDD一定可以在国内加速发展。

在即将到来的第十三届中国系统架构师大会(SACC2021)上,王植萌将作为“DDD领域驱动设计专场”的出品人,为大家带来去哪儿网实际的DDD业务重塑案例,包括实践中和实践后的思考,期待能给听众朋友们带来启发与帮助。