描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787111666301
适读人群:
企业信息技术管理者,业务分析和建模人员,架构和设计人员,微服务开发人员,计划从事信息系统架构设计相关工作的人员;本书适合有2年以上的设计或开发经验的中级以上人员。
(1)作者是某大型保险公司架构师,有10余年软件架构经验,擅长DDD、中台和分布式微服务架构设计。
(2)本书为基于DDD思想的中台建设和微服务拆分与设计提供指导,给出了体系化的前、中、后台协同设计方法。
(3)注重实战,汇聚大量分布式架构的*新设计方法、思想和理念,同时包含大量的案例和代码。
(4)交互式的行文风格,文字有活力,内容不刻板,简洁易懂。
(5)本书荣获51CTO 2020年度“*受读者喜爱的IT图书”奖。
这是一部系统讲解如何基于DDD思想实现中台和微服务协同设计和落地的著作。
它将DDD、中台和微服务三者结合,一方面,它为中台的划分和领域建模提供指导,帮助企业更好地完成中台建设,实现中台的能力复用;一方面,它为微服务的拆分和设计提供指导,帮助团队提升分布式微服务的架构设计能力。给出了一套体系化的基于DDD思想的企业级前、中、后台协同设计方法。
本书注重实战,汇聚了大量分布式架构的*新设计方法、思想和理念,同时包含大量的案例和代码,是理论与实践相结合的*佳经验分享。交互式的行文风格,文字有活力,内容不刻板,简洁易懂。
本书共分为六个部分:
第壹部分 认识中台(第1~4章)
主要从业务中台、数据中台、技术中台以及与之匹配的组织架构等多个方面分析传统企业中台转型应该具备的能力,带你初步了解DDD是如何指导中台和微服务设计,并厘清它们的协作关系。
第二部分 DDD基本原理(第5~11章)
通过浅显易懂的案例讲解DDD的核心基础知识、设计思想、原则和方法等内容,了解它们之间的协作和依赖关系,做好中台实践前的准备工作。
第三部分 中台领域建模和微服务设计(第12~19章)
首先,通过案例手把手带你用DDD方法完成中台和微服务的全流程设计,深刻理解DDD在中台领域建模和微服务设计中的步骤、方法、设计思想和价值;然后,通过一个完整案例带你了解用DDD设计方法完成领域建模与微服务设计的全流程。
第四部分 前端设计(第20~21章)
引入微前端和单元化的设计思想,通过前端微服务化和单元化设计思想,解决业务中台建设完成后前端应用仍然为单体和前后端服务集成复杂的难点。此外,还探讨了基于领域模型的单元化设计方法。
第五部分 中台设计案例(第22章)
采用自顶向下的领域建模策略,通过案例讲解中台设计的完整流程。涵盖业务领域分解、中台领域建模、微服务和微前端设计、单元化设计以及业务和数据如何融合等内容。
第六部分 总结(第23~24章)
结合作者多年的设计经验和思考,阐述单体应用向微服务架构的演进策略、如何避免陷入DDD设计的常见误区、微服务设计原则以及分布式架构下的关键设计等内容。
为何写作本书
当前基于微服务架构来构建企业级应用已成为业界趋势。微服务架构很好地实现了应用解耦,可以更好地实现应用上云,解决单体应用扩展和弹性伸缩能力不足的问题。鉴于众多互联网企业微服务架构转型后带来的成功和收益,越来越多的传统企业也开始从单体架构向微服务架构转型。但在演进的过程中,微服务到底应该怎样拆分和设计,拆多小才算合理?这已经成为业内重点关注的话题。
继阿里巴巴成功完成中台战略转型后,很多大型企业也紧随其后开启了中台数字化转型。作为中台,需要将通用的业务能力沉淀到中台业务模型,实现企业级业务能力复用。中台建设面临的首要问题是如何按照可复用原则完成企业级业务模型重构。而在中台落地时,又会面临微服务拆分和设计的问题。这两个问题一前一后,对任何企业来说都是不小的挑战。
现在市面上关于微服务开发和技术的学习资料非常多。但在中台数字化转型过程中,关于如何进行业务领域边界划分,如何完成中台领域建模实现能力复用,如何完成单体应用拆分和微服务设计,如何实现前中后台的协同设计等,可参考和借鉴的资料并不是很多,即便有一些,真正理解和实施起来也是困难重重。
中台越来越火,微服务越来越热,参与的人也越来越多,但是市面上一直没有一套体系化的理论与方法来指导中台和微服务建设。那是否有成熟的理论或方法来指导中台领域建模以及微服务拆分和设计呢?答案是肯定的,那就是DDD(Domain Driven Design,领域驱动设计)。
2003年埃里克·埃文斯(Eric Evans)出版了《领域驱动设计》,从此DDD诞生。在沉寂了十多年后,随着微服务架构的流行,DDD强势崛起,成为很多企业微服务的主流设计方法。DDD首先从业务领域入手,划分业务领域边界,采用事件风暴工作坊方法,分析并提取业务场景中的实体、值对象、聚合根、聚合、领域事件等领域对象,根据限界上下文边界构建领域模型,将领域模型作为微服务设计的输入,进而完成微服务详细设计。用DDD方法设计出来的微服务,业务和应用边界非常清晰,符合“高内聚,低耦合”的设计原则,可以轻松适应业务模型变化和微服务架构演进。
微服务与DDD的共生关系主要从两方面来体现。一方面是微服务提倡将应用进行服务化拆分,通过业务领域边界实现应用服务边界的划分。另一方面,DDD恰好提供了一种基于业务限界上下文边界来实现微服务“高内聚,低耦合”的服务构建方法。将两者合理搭配使用,研发组织可以轻松实现面向服务的设计,享受持续交付与架构演进。
DDD与微服务,乃至中台设计的结合,目前仍是一个非常新的领域。很多人可能并不清楚它们的关系,不知道该如何利用DDD来完成中台和微服务的协同设计。
基于上述背景,本书聚焦业务中台设计和建设,系统地阐述了基于DDD的中台和微服务建设的方法体系,主要包括中台业务边界划分和领域模型构建,微服务、微前端设计理念与实践,以及如何进行前中后台的协同设计和单元化设计等内容。
本书主要特点
纵观全书,本书具有以下6个显著特点。
1)深入浅出,浅显易懂。本书打破了常规采用大量理论知识堆砌来讲解DDD知识的方式,用大量场景化的案例类比和分析,带你深入理解DDD基础知识和核心设计思想,解决了DDD知识体系过于庞大而难以理解和微服务落地困难的问题。
2)结构合理,从DDD理论到微服务实践完美结合。本书从理解DDD基础理论知识和核心设计思想出发,结合多个企业级业务场景,完成了DDD全流程的领域建模和微服务设计,对服务设计与技术落地等实现细节进行了大量的示例说明。结合案例设计,完成了微服务代码的开发,并对代码实现进行了详细的代码分析和讲解,帮助你避免开发过程常见问题的发生。可以说,本书从理论中来,到实践中去,能够有效指导中台和微服务的设计和开发。
3)化繁为简,从宏观业务分析到微观技术实现面面俱到。DDD、微服务与中台三者中的任何一项,放在任何一家企业,都是一项非常庞杂且复杂度非常高的工作。本书分别从DDD设计视角和中台建设视角进行对比分析,梳理了DDD、微服务与中台三者之间的协作关系。特别强调从业务领域出发,利用DDD战略设计和战术设计方法同时指导中台领域建模和微服务设计。可以说,DDD是中台和微服务设计的最佳指导方法,而微服务则是中台的最佳技术实现,它们就是这样的铁三角协作关系。我们将三者结合,从企业领域到子域的战略设计、宏观业务领域边界划分到微服务内底层领域对象的逐级细化设计,降低软件产品建设的复杂度,实现从宏观战略到技术实现细节的无缝衔接。
4)案例翔实,建立了企业级的中台建设方法体系。本书涵盖了前台、中台和后台建设及设计的完整方法,建立了一套标准的中台领域建模和微服务设计方法及流程,可以很好地指导企业完成中台设计和微服务落地。通过大量复杂业务场景的详细案例设计和分析,将DDD、中台和微服务三者结合,以近乎手把手的方式详细介绍了中台和微服务的设计方法和步骤。在中台业务建模时,你可以利用DDD战略设计,分解业务领域,从事件风暴入手,根据限界上下文边界构建可复用的中台领域模型。在中台落地时,你可以利用DDD战术设计,根据领域模型指导完成微服务和微前端设计和落地。
5)问题导向,一切都是为了解决实际问题。本书引入了大量成熟的中台与前台相关技术和设计方法,体系化地解决了企业中台建设过程中前台、中台和后台的协同设计,以及共享、联通与融合的问题。引入微前端设计思想,解决中台微服务化后,前端仍存在因单体而产生的前端集成和开发复杂的问题。为此,书中首次提出了基于领域模型的、单元化的设计思想,以领域模型为基准,向上构建微前端以实现领域模型的前端页面逻辑,向下构建微服务以实现领域模型的核心领域逻辑。将微服务和微前端集成组合为组件级业务单元,实现微前端页面逻辑和微服务接口能力的企业级复用。设计时,我始终强调应结合企业实际情况,选择最合适的方法和工具解决企业的实际问题,具体情况具体分析,灵活、体系化地运用技术和方法,通过常见问题分析和经验总结,避免陷入常见设计误区。
6)文字简洁,易于阅读。本书部分内容来源于我在极客时间的专栏《DDD实战课》,整体采用与读者交互的行文风格,经过多重打磨,文字有活力,内容不刻板,更加简洁易懂。
本书阅读对象
本书是一本关于中台、微服务和微前端设计与建设的书,采用了DDD设计思想和方法,适合的阅读对象主要分为下面几类:
从事企业数字化转型的企业管理者;
从事企业技术架构和微服务设计的架构师;
从事企业业务架构设计和业务建模的业务人员;
从事微服务设计和开发的高级技术人员;
希望从事中台和微服务架构设计的人员;
对DDD、微服务和中台设计感兴趣的学习者。
如何阅读本书
本书主要包含24章,共分为6部分。
第一部分 认识中台(第1~4章)
本部分包括4章,主要介绍中台相关背景知识,认识并理解中台的真正含义,从业务中台、数据中台、技术中台以及与之匹配的组织架构等多个方面分析传统企业中台转型应该具备的能力,带你初步了解DDD是如何指导中台和微服务设计,并厘清它们的协作关系的。
第二部分 DDD基本原理(第5~11章)
为了让你能够更加深刻地理解DDD,本部分通过一些浅显易懂的案例,帮助你学习并深刻理解DDD的核心基础知识、设计思想、原则和方法等内容,了解它们之间的协作和依赖关系,解决DDD概念理解困难的问题,做好中台实践前的准备工作。本部分包括7章,主要讲解DDD的关键核心知识体系,包括领域、子域、核心子域、通用子域、支撑子域、限界上下文、实体、值对象、聚合、聚合根、领域事件和DDD分层架构等知识。
第三部分 中台领域建模与微服务设计(第12~19章)
本部分包括8章,主要介绍DDD是如何通过战略设计构建中台业务模型,以及如何通过战术设计指导微服务拆分和设计的。在这一部分,我会用多个实际案例,带你用DDD方法完成中台和微服务的全流程设计,深刻理解DDD在中台领域建模与微服务设计中的步骤、方法、设计思想和价值。
1)了解如何用事件风暴方法构建领域模型。
2)了解如何用DDD设计思想构建企业级可复用的中台业务模型。
3)了解如何用DDD设计微服务代码模型,如何将领域模型映射到微服务以建立领域模型与微服务代码模型的映射关系,如何完成微服务架构演进等。
最后用一个案例将DDD所有知识点串联在一起,带你深入了解如何用DDD的设计方法完成领域建模与微服务设计的全流程,并对代码示例进行了详细分析和讲解。
第四部分 前端设计(第20章和第21章)
本部分包括两章,主要介绍微前端的设计思想,通过前端微服务化和单元化的设计思想,解决业务中台建设完成后前端应用解耦和前后端服务集成复杂的难点。书中阐述了如何借鉴微服务的设计思想来解构前端应用,实现前端应用的拆分解耦,并结合实践介绍前端架构的转型策略与技术落地。
另外,本部分还探讨了基于领域模型的单元化设计方法。通过微服务与微前端组合后的单元化设计,既可以降低企业级前台应用集成的复杂度,又可以让企业具有更强的产品快速发布和业务响应能力。这种能力能给我们的团队组建、研发模式、业务能力发布等带来非常大的价值。
第五部分 中台设计案例(第22章)
本部分包括一章,通过保险订单化设计案例,采用自顶向下的领域建模策略,带你走一遍中台设计的完整流程。案例中涵盖业务领域分解、中台领域建模、微服务和微前端设计、单元化设计以及如何实现业务和数据融合等内容,希望能够帮助你加深对DDD、中台、微服务和微前端等知识体系、设计思想和技术体系的全面理解,更好地投入DDD、中台和微服务建设实践中。
第六部分 总结(第23章和第24章)
本部分是全书的总结,包括两章。书中结合我多年的设计经验和思考,带你了解单体应用向微服务架构的演进策略,如何避免陷入DDD设计的常见误区,微服务设计原则以及分布式架构下的关键设计等内容。
勘误
由于时间仓促,加之水平有限,错误和疏漏之处在所难免。在此,诚恳地期待你的批评指正。如果你有任何疑问、技术交流需求或建议,可以直接发送至邮箱([email protected]),或关注微信公众号“中台架构与实现”,我们会及时反馈。
致谢
感谢ThoughtWorks强大的技术团队和丰富的文档资料。ThoughtWorks对DDD的大力宣传和推广,给我们提供了大量的学习和参考资料。技术雷达可以让我们了解最新的技术趋势和研究方向。总之,受益匪浅。
感谢机械工业出版社华章公司副总编辑杨福川老师和编辑李艺老师,他们在我们写作过程中提供了大量的帮助和支持,付出了辛勤劳动,指导我们顺利完成本书。
感谢极客时间总编辑郭蕾老师和专栏主编李佳、王冬青老师指导我顺利完成了《DDD实战课》专栏,有了专栏的技术和文字积累,我才有足够的信心完成本书。
感谢本书合著者邓頔提供的微前端实施经验。他负责编写本书微前端部分章节内容,并为本书的策划、内容、实践和校对提供了宝贵建议和意见。
特别感谢PICC各位领导和同事在本书编写过程中提供的帮助和支持!
在本书编写过程中,ThoughtWorks中国区技术战略咨询服务负责人、首席架构师王威(David)老师给予了大量指导并为本书写序。在此表示感谢!
欧创新
欧创新是极客时间《DDD实战课》专栏的优秀作者,他对中台和DDD有着自己独到的见解。这本书给我们提供了理解中台、DDD和微服务相关概念和实践的望远镜(宏观视角)和显微镜(微观视角),推荐阅读。
——郭蕾 极客时间总编辑
中台在经历了各种争论后,开始进入理性实践阶段,本书在澄清概念的同时,详细介绍了保险领域的DDD与微服务实践,相信读者在充分理解了这些宝贵的经验之后,也能够走出一条知行合一的中台自主之道。方法论的研究意义深远,我们永远在路上。
——付晓岩 建信金融科技有限责任公司团队副总经理/《企业级业务架构》《银行数字化转型》作者
本书从中台规划开始的DDD理念,到后台架构上基于微服务的解耦和聚合方式,再到微前端的架构和实现,以理论结合实际的方式系统地阐述了中台从规划到实现的全流程,为希望了解中台的设计和实现方式的读者提供了很好的指导。
——彭锋 智领云联合创始人兼CEO
本书将DDD和中台建设结合起来,详细阐述了基于DDD进行服务设计的过程,以及微前端的建设方法,*后还结合具体例子说明了整个过程,为中台的建设提供了具体的指导。
——李元佳 云徙科技联合创始人
中台架构是一个复杂的架构理念,不是现成的可以即插即用的产品或工具。中台的理想如何实现?业务架构、应用架构、数据架构、技术架构如何四位一体?且看保险领域先行者如何躬身向前用DDD和微服务把理想实现。
——史海峰 微信公众号“IT民工闲话”作者
企业纷纷开始建设中台的过程,就是企业的业务和架构从粗放式产品型管理到精细化平台型管理的演进过程。在这个过程中,如何从我们熟悉的纵向产品视角切换到相对抽象的横向平台视角,是其中的难点和重点,DDD和微服务正好在设计和技术层面给我们提供了方法论,是中台规划与建设必须掌握的基本能力。本书正是专注于此,系统而专业,强烈推荐。
——王健 ThoughtWorks 首席咨询师/《白话中台》系列文章作者
本书从DDD实际落地出发,通过大量案例分析和介绍,读者可以非常容易地了解其核心设计思想和流程,掌握DDD整套理论体系。可以说是一本难得的从理论到实践的书。
——贺阮 腾讯专家工程师
序 1
个人对DDD一直比较有兴趣,也包括企业架构设计、在DDD之前的领域分析如分析模式、彩色建模等。如果把软件按照相对的“稳定性”来排序,领域层>应用层>界面层。以营销为例,撬动用户的还是老三样:卡、券、积分,本质就是营销资产 资金流,而从产品包装上可以策划满减、满返、2件折扣、限时优惠、限定电商全场消费、限定活动线下商超、限定品类等活动,不一而足。领域层是相对稳定的,应用层(业务逻辑层和具体规则)可以有多种变化,而广义界面层的实质包括产品包装、交互等可以有更多的互动玩法。窃以为,领域分析的价值所在就是寻求“千变万化”中相对的“稳定性、第一性”,然后通过合理的架构分层及抽象隔离的业务复杂度和技术复杂度,隔离业务领域的稳定性和易变性,从架构上精巧、快速地支持业务的变化。 技术为业务服务,但绝不是业务到IT的简单翻译。
欧老师精于保险业务,对于DDD也有自己的理解和看法。从经典的DDD战略设计到基于微服务的战术设计/实现的案例,本书给出了全面的参考案例。知行合一,则“限界上下文”“实体”“值对象”“聚合”“事件”“事务一致性”等都不再神秘。本书也有一些可喜的创见,如对于“微前端”和“业务单元化”的提炼。本书以保险订单化销售业务领域为例,采用自顶向下策略,完成保险部分业务领域的中台设计,带领读者了解中台设计全流程,理解DDD、业务中台、微服务、微前端与单元化设计的关系以及它们的核心设计思想。
本书价值不菲,强烈推荐。无论对于DDD的初学者,还是DDD的资深人士,都有相应的启发。写作者的最大安慰莫过于读者觉得有价值,有收获。祝大家阅读愉快!
右军,《深入分布式缓存》《程序员的三门课》联合作者
序 2
为不确定而架构
在过去的几年中,因为工作的关系,我同很多科技类企业和组织合作过。这些企业和组织分布在不同的行业和地区,从电信、金融到物流供应链,从国内到全球各地。几乎所有技术行业的同人在谈到未来的时候,都流露出了很强的改变意愿和紧迫感。例如今年出现的新冠肺炎疫情,以及围绕疫情在全球范围出现的一系列连锁反应,都导致大家逐渐形成了一个共识:世界已经从根本上改变,未来20年将要发生的事情,可能是我们今天根本无法想象的。在这样的背景下,每一个组织都希望能够通过加大科技的投入,赋能自己的客户和业务,从而做好应对未知挑战的准备。
另一方面,软件“侵蚀”世界已经是不争的事实,在国内的很多城市中,恐怕已经很难想象完全脱离软件的生活会是什么样子。即使我们不谈“不可见”的嵌入式软件和网络控制类软件,仅仅脱离了智能手机以及建于其上的各种App,我们熟悉的生活似乎将无法运转下去。新兴的科技公司,在利用软件技术打造新的场景,培养用户的使用习惯,创造新的业务价值的同时,也在倒逼前辈们对传统的业务进行数字化改造,以适应新时代下技术的变化速度。同时,科技公司又将自己的最佳实践标准化、产品化,希望通过与传统企业的合作,加速整个行业变革的进程。20年前的SOA架构、6年前的微服务架构和3年前阿里的“中台”都是这种模式的很好代表。
客户习惯的改变,技术的发展和快速演进,以及在一些行业出现的外力作用,都带来了价值、场景、技术、政策的不确定性。所有不确定性的综合,使得软件的构建过程一定会面对这样的窘境:软件永远跟不上业务变化。为了解决这样的问题,业界的前辈们一直在通过管理、技术、工具平台等多种维度来解决同一个问题:如何使软件的构建具备更高的响应力。敏捷、精益、DevOps、效能平台都是为解决这个问题而出现的解决方案。在这个过程中,“如何在复杂业务场景下设计软件”逐渐成为架构师们关注的焦点。领域驱动设计(以下简称DDD)的提出,恰恰解决了这一问题。但是在2010年之前,因为单体应用仍然占据主流地位,DDD“曲高和寡”。直到“微服务”的出现,才消除了原来单体应用的桎梏,使得DDD成为架构师们都在讨论的软件架构设计标准实践。
近年来,DDD在国内的影响力逐年增大。我仍然记得在2015年前后和企业交流的时候,当时大家对于什么是DDD完全摸不着头脑,很多组织直接把源自“产品线工程”的“领域工程”和DDD作为相同的概念加以实践。2017年我们举办了第一届DDD中国峰会,那时有很多参与的同行对于DDD如何在自己的组织、场景中落地还存有这样或那样的疑虑。而到2019年的第三届峰会时,大家更多是带着问题和经验来和业界的同行们一起交流心得,探索在新场景下如何利用DDD带来更多的价值。
我和欧创新老师正是在这样的背景下认识的。欧老师在过去几年中将DDD的思想、微服务以及中台的理念同自己企业的实际相结合,积累了丰富的实践经验。每一次和欧老师交流,我都能学到很多东西。当欧老师找到我为这本书作序的时候,我既受宠若惊,又诚惶诚恐。在拜读完本书后,我惊讶于在这么短的时间内,欧老师不仅将自己获得的经验提炼总结,还用通俗易懂的语言和丰富的案例,将DDD、微服务、中台的概念和围绕在它们周围的实践讲述得如此详细。本书确实是业界难得的一个针对架构设计和中台转型的技术层面的总结,我个人从中获益匪浅,相信本书的读者朋友会和我有同样的体会。
王威
ThoughtWorks中国区技术战略咨询服务负责人
评论
还没有评论。