《悟道领域驱动设计》系统介绍领域驱动设计的理论知识与实践方法,不仅讲解领域驱动设计的战术设计(如实体、值对象、聚合、聚合根、领域服务、领域事件等)、战略设计(如限界上下文、上下文映射、子域等)、领域建模等理论知识,还探讨领域驱动设计的应用架构、类型变化链、一致性、CQRS、事件溯源、编码指南、架构可视化(基于C4模型)等工程实践,探索如何将领域驱动设计与当前业界流行的开发方法(如低代码、敏捷开发、测试驱动开发等)融合,使领域驱动设计成为真正可落地的开发方法。本书在介绍概念时,提供了代码层面的讲解,这样可以极大地降低读者对概念的理解难度。此外,书中还提供两个热门领域的项目案例——基于领域驱动设计开发的视频直播服务和AIGC产品,帮助读者理解、掌握、应用领域驱动设计。
《悟道领域驱动设计》适合计算机相关行业的从业人员阅读,包括初级、中级和高级研发者,也适合架构师、技术总监等高级技术管理者阅读。
系统梳理DDD知识体系,深度剖析DDD实战细节
覃玉杰 互联网一线开发者、资深架构师和研发负责人。擅长复杂场景下的业务需求落地,在电商、直播、互联网健康、互联网金融、物流供应链、电子政务等领域拥有丰富的实践经验;设计、重构、维护过多个百万级QPS的P0级服务,多次参加“618”“双11”大促活动,具备丰富的高性能、高并发、高可用系统设计开发经验;多次从0到1组建研发团队,推动研发体系搭建、研发规范制定、团队文化建设、团队成长规划和技术能力培训;热衷技术精进和知识分享,维护多个开源项目,运营微信公众号“悟道领域驱动设计”。
领域驱动设计(Domain-Driven Design,DDD)自提出以来,备受业界推崇,长盛不衰。众多从业者对领域驱动设计表现出极大的兴趣,然而,其学习门槛常常让人望而却步。我亦曾与大多数初学者一样,在初次接触领域驱动设计时便感受到了它的艰深复杂。即使经过长时间的摸索,始终不能融会贯通并将其应用于实践,这让我一度对领域驱动设计的理论产生怀疑,甚至认为其只是纸上谈兵、空洞无物。
后来,又经过了很长时间的“磕磕碰碰”,我终于对领域驱动设计有了一些了解,并且从领域驱动设计中获益,但我也深刻体会到初学者面对这一庞大的理论体系时的无助和困惑。因此,我希望将自己对领域驱动设计的理解分享出来,与他人交流探讨,共同进步。最初,我撰写了一些关于领域驱动设计的文章并发布在微信公众号上,得到了读者的支持和反馈。在与他们的互动中,我获益匪浅,并听取他们的建议,在GitHub 中创建了“Thinking-in-DDD”项目,专门汇总整理我关于领域驱动设计的实践经验和学习资源。一篇篇技术文章的沉淀,最终形成了这本书。
本书只是我个人在实践领域驱动设计过程中的经验教训和总结,相较于领域驱动设计宏伟的理论体系,这本书还是显得太单薄了。如果本书能成为初学者学习领域驱动设计的入门读物,帮助他们少走弯路,我便心满意足了。
主要内容
本书共21 章,主要内容如下。
第1 章主要带领读者初步了解领域驱动设计,包括其历史背景、基本理解、意义、困境,以及学习难点和学习路线,也探讨了业界对领域驱动设计的一些争议。
第2 章介绍充血模型和常用的应用架构,并带领读者从贫血三层架构出发,逐步演化出一套可落地的应用架构。另外介绍了如何在这套架构中实现领域对象生命周期的维护和类型变化链。
第3 ~ 5 章对战术设计的基本概念进行介绍,包括实体、值对象、聚合、聚合根、Factory、Repository 和领域服务。
第6、7 章探讨如何在领域驱动设计中应用设计模式来解决复杂的业务问题。
第8 ~ 10 章介绍领域事件、CQRS、事件溯源,探讨事件驱动的应用实现。
第11 章探讨领域驱动设计的一致性实现,包括聚合内事务、跨聚合事务的一致性方案,并介绍经典的分布式事务解决方案。
第12、13 章分别探讨战略设计和领域建模。
第14 ~ 16 章探讨如何将业界流行的开发方法与领域驱动设计相融合,使领域驱动设计成为实际开发的利器。
第17 章介绍基于C4 模型的架构可视化方法。
第18 章探讨如何将领域驱动设计应用于系统重构。
第19 章探讨如何在团队内推广领域驱动设计。
第20、21 章提供两个综合实战案例,基于领域驱动设计开发视频直播服务和AIGC 产品。
如何阅读本书
本书的章节内容是按照1.2.2 节中给出的学习路线安排的,零基础的读者可以按照顺序逐章节阅读,具有一定基础的读者可以根据实际情况选择自己感兴趣的内容阅读。
读者可以通过“读者服务”提示获得领域驱动设计相关的学习资源,具体包括:读者群的公开技术分享视频教程、随书源码和案例代码、章节实战作业等资源。这些资源能帮助读者更好地理解并应用领域驱动设计。
读者在学习过程中遇到疑问时,可以通过微信公众号“悟道领域驱动设计”与我交流探讨。我会定期整理收到的读者疑问,并将其发布在微信公众号中。
致谢
感谢我的家人和朋友,是你们的支持和鼓励,使本书得以顺利完成创作。
感谢电子工业出版社博文视点公司和宋亚东编辑,感谢你们对本书的认可和付出。
感谢“悟道领域驱动设计”微信公众号的读者,是你们的日常催更,坚定了我创作的信心。
由于作者水平所限,书中难免存在谬误,恳请各位同行和前辈不吝批评、指正。
覃玉杰