- 领域驱动设计:业务建模与架构实践
- 王红亮
- 2092字
- 2024-03-04 17:23:27
Preface
前言
为什么要写这本书
本书创作的初心有两个。
第一,服务于广大开发人员的职业进阶和转型。
本书讲授的是领域驱动设计(Domain-Driven Design, DDD)的相关知识。DDD是一种业务建模和架构设计方法,而业务建模和架构设计是开发人员职业进阶和转型的必备技能。
在当今AI技术大流行的背景下,快速掌握这两项技能对开发人员来说很重要,因为写程式化“胶水代码”的工作很快就会被AI所取代。AI加速了开发这个岗位的进化和发展,这并不是件坏事。试想一下未来开发团队的工作场景:建模师们和行业的领域专家共同完成模型的搭建,AI就帮助我们生成了相应的代码,包括测试和必要的界面,之后只要把这些代码和工作成果稍加优化,整个开发就结束了。功能实现以后,架构师登场,根据业务需要设定除功能之外的其他质量属性的要求,如安全、性能、可用性、可维护性和兼容性,并在AI的辅助下给出各个质量属性的解决方案,配合云原生或PaaS平台的部署环境,系统很快搭建完毕,上线运行。
在这个场景中,你所要做的就是把职业技能树上的建模或架构这两部分点亮。所以,如果未来本书注定会出现在你的办公桌上,不如现在就把它买回家——可以先人一步,及早开始。
有人会说,凭什么未来和你描述一样呢?是不是有蹭AI热度之嫌?好吧,撇开AI不谈(其实它并不是一个体现本书价值的关键因素),想象一下五年后的自己,任何技术人员的职业发展都是从低级到高级、技术到业务、具体到抽象的过程。即便没有AI,我们是要立志成为精通多个领域知识的建模师、架构师,还是一个只会写代码,知晓许多类库用法的技术人员?答案在你心中。更何况,上面描述的工作场景已经不是未来时态了,在很多团队中已经真真切切地开始发生。
几年之内,开发人员都会逐步转到新的工作中,开发岗位的工作内容会发生巨大变化。如前所言,这绝不是坏事,它让我们的职业迈上了新的台阶,而我们唯一要做的就是开始学习,点亮建模和架构的技能树。
本书可以成为一个不错的起点,不管你是否曾经了解过DDD、参与过模型构建,它都可以让你轻松地开始。随着阅读的深入,你会发现自己已经完全被代入了建模师和架构师的角色。
第二,推动DDD方法落地的同时促进国内软件工程思想的发展。
从20年前上学时阅读的《人月神话》《人件》,到如今敏捷、DevOps、TDD、DDD等各种方法满天飞,所有主流的软件工程思想都来源于国外。当然,由于技术发展的历史原因,这并不奇怪。我们也早已不缺少世界级的互联网公司和有实力的科技企业,但在“如何开发好软件”这个问题上,还很难看到国人的创新思维和贡献,更关键的是,我们甚至都没意识到这是个问题。
更严重的影响还在于,由于缺乏对这个问题的主动探索和深入思考,我们对外来方法论的应用大多停留在“术”的层面,缺乏对“道”的探究。有术无道止于术,有太多生搬硬套、南辕北辙的例子了,团队和企业管理者根本感受不到这些方法论带来的价值,甚至对它们产生了误解和反感。
本书与其他讲授DDD的书籍的主要区别在于,它绝不仅仅讲授方法和技巧(当然,本书在这方面也有非常丰富且创新的内容),还深入发掘了其背后的思想和原理。使用的软件工程和架构原则的分析方法也不局限于应用在DDD上,而是可以用来衡量任何方法的效能和技术决策的优劣。
本书的目的之一是在指导团队成功落地DDD的同时,激发读者对书中思维角度和分析方法的思考。因此这些思想和方法都不是完美无瑕的,而恰恰相反,笔者希望读者能在思考后给出批判性的意见。激发读者思考,终究会点燃有才华的读者的灵感之火。
读者对象
❑ AI时代需要职业转型的开发人员、架构师及其他IT从业者。
❑ 工业制造、新兴互联网等复杂领域的软件开发团队。
❑ 计划或已经落地DDD、TDD、微服务和DevOps的软件开发团队。
❑ 技术管理者、研发效能专家和咨询顾问。
❑ 即将步入社会的计算机系大学生。
本书主要内容
第1~3章为理论部分,主要讲授DDD的底层逻辑、基本原则、价值、落地难点和成熟度模型。其中,第1章是全书的基石,特别是DDD的两个基本原则,是我们讨论后面内容的基础,读者务必仔细阅读、领悟和掌握。第2章分析了DDD落地的难点,帮助团队扫清障碍。第3章首次提出DDD成熟度模型,不仅列出了整个DDD战略和战术模式,还提出了企业收益这个对企业意义重大的衡量指标,3个成熟度阶段的划分对团队也具有重要的指导意义。
第4~10章为实操部分,主要讲授DDD的战略和战术,分别对应于业务建模和架构技术。其中,第4~6章侧重于业务建模,主要介绍如何构建领域模型和打造通用语言。第7章侧重于架构技术,主要讲授如何分割系统、构建模块。第8章主要解决DDD在编码环节可能遇到的问题。第9章则是设计模式的运用,这些模式将帮助我们得到更加智慧、更加优雅健壮的领域模型。第10章阐述DDD和系统架构之间的关系。
勘误和支持
作者在博客园(Cnblogs.com)开设了专栏讲解书中的内容并回答读者提问,读者在该网站搜索书名即可找到相关专栏并参与讨论。此外,读者还可以直接关注作者的微信公众号“架构师小酒馆”来反馈问题。
致谢
感谢曾经一起共事的研发团队的各位同事,感谢北京交通大学软件学院和我曾经的学生们。正是多年研发团队的工作经验和教学中的沉淀积累,为本书提供了生根发芽的丰厚土壤。
感谢我的家人,他们是我工作的原动力,我永远爱他们。