《【李全党】业务驱动的微服务架构演进之路:以 DDD 为指导思想.pdf》由会员分享,可在线阅读,更多相关《【李全党】业务驱动的微服务架构演进之路:以 DDD 为指导思想.pdf(42页珍藏版)》请在三个皮匠报告上搜索。
1、业业务务驱驱动动的的微微服服务务架架构构演演进进之之路路:以以 D DD DD D 为为指指导导思思想想李李全全党党去哪儿网高级技术经理2021 年加入去哪儿网酒店供应链代理商和基础信息业务负责人、业务架构SIG成员拥有 10 年以上系统研发和软件架构设计经验主导搭建多个 DDD 项目,有高并发、分布式服务、高可用的建设优化经验李李全全党党0 01 1架架构构设设计计理理念念与与技技术术架架构构的的演演变变路路径径单体服务化平台化中台化服务拆分、治理及模型抽象能力沉淀、服务合并、领域自治数据互通、业务变化高响应力架架构构设设计计理理念念从业务出发、面向业务变化是架构设计成功的关键商商业业模模式
2、式及及成成熟熟度度传传统统行行业业:业务相对稳定建议单体设计互互联联网网行行业业:初创、商业不确定性-成熟、商业模式稳定面面向向业业务务变变化化面向业务变化快速响应:技技术术延延迟迟决决策策架构整洁之道:良好的架构设计应该只只关关注注用用例例,并能将他们与其他的周边因素隔离组件设计围绕业务变化组件调用非强依赖组件业务复用组件颗颗粒粒度度与与成成熟熟度度架架构构设设计计理理念念可测试运维、康威、质量属性康康威威和和逆逆康康威威定定律律康威:产品必然是其(人员)组织沟通结构的缩影逆逆康康威威:优先系统设计,后做组织建模面面向向测测试试、运运维维把事情做在前面,如果架构设计很难进行隔离、mock、测
3、试等,那么就是糟糟糕糕的的架架构构软软件件质质量量属属性性运行期和开发期:可用性、可修改性、性能、安全性、易用性等。以功功能能性性为为主主进行架构设计,以质质量量属属性性为为依依据据进行增量式迭代重构和优化架架构构关关键键技技术术D DD DD D领领域域驱驱动动设设计计容容器器和和自自动动化化前前后后端端分分离离事事件件驱驱动动 C CQ QR RS S服服务务监监控控和和治治理理0 02 2业业务务系系统统重重构构背背景景业业务务系系统统重重构构背背景景业务介绍-酒店基础信息列表页详情页酒店Info进订页基基础础信信息息业业务务架架构构业业务务系系统统重重构构背背景景落地技术中心战略(巩固
4、效率之本、分担产品之忧),偿还技术债务核核心心业业务务入入侵侵产产研研合合作作效效率率链链路路及及延延时时长长0 03 3业业务务系系统统重重构构改改造造模模式式和和架架构构选选择择:没没有有最最好好的的架架构构,只只有有最最合合适适的的架架构构系系统统重重构构模模式式选选择择修修缮缮者者绞绞杀杀者者演演进进式式边边车车模模式式系系统统重重构构模模式式选选择择基于业务驱动DDD+绞杀模式+演进式模式的系统重构,打造高响应力的架构自自下下而而上上面面向向模模型型分分析析,高高内内聚聚、低低耦耦合合D DD DD D绑绑定定业业务务和和应应用用架架构构D DD DD D核核心心思思想想分分而而治治
5、之之领领域域模模型型分分层层架架构构关关注注点点分分离离统统一一语语言言能能力力域域能能力力组组业业务务能能力力B BA A应应用用域域应应用用组组应应用用A AA A领领域域子子域域限限界界、聚聚合合D DD DD D主主题题域域主主题题组组主主题题D DA A业业务务流流程程自自上上而而下下结结构构化化分分解解0 04 4以以业业务务驱驱动动的的微微服服务务架架构构演演进进实实践践领领域域驱驱动动设设计计过过程程基基于于 D DD DD D 落落地地实实践践定定位位愿愿景景业务价值流业务场景分析事件、命令风暴业务边界工作边界应用边界领域分析识别实体值对象聚合业务服务划分领域模型映射应用分层
6、架构问问题题域域分分析析领领域域建建模模识识别别限限界界及及子子域域划划分分模模型型实实现现问问题题域域分分析析业务价值分析(定位愿景)电电梯梯演演讲讲:对产品的顶层价值设计,对产品目标用户、核心价值、差异化竞争点、痛点等策略层信息在团队层面达成共识。聚聚焦焦:愿景目标价值问问题题域域分分析析业务场景分析用用例例名名称称代理商酒店聚合用用例例描描述述系统或运营为代理商酒店进行聚合,以便代理商报价可以参与竞价,外网漏出角角色色系统/运营触触发发事事件件上游系统调用或运营手工操作酒店聚合功能前前置置条条件件根据酒店名和地址确定走国内酒店聚合算法策略事事件件流流基基础础流流程程1、待聚合数据规格化处
7、理,如酒店名称、酒店电话、城市等3、系统从数据库中查询已有酒店并做规格化处理4、设置当前酒店签名5、酒店聚合算法处理6、非只读数据保存或更新聚合结果7、如果代理商酒店名称异常(xxx),则对代理商酒店tree进行异常标记分分支支流流程程5.1国内酒店聚合新版算法5.2国内酒店聚合旧版算法5.3国际酒店聚合算法替替代代流流程程如果酒店不合规,则中止流程,并返回错误信息后后置置条条件件2、通知其他团队酒店聚合发生变化1 18 88 8|7 79 9明明确确领领域域专专家家业务产品PM-资深技术团队-技术负责人补位业务价值流分析用户用例分析低价值/无价值业务下线事件风暴领域知识问问题题域域分分析析事
8、件风暴(酒店聚合流程为例)-整整个个风风暴暴过过程程,注注意意识识别别的的规规则则、命命令令、事事件件,形形成成统统一一语语言言业务视角事件影响主流程分支规则逆向检查(忽略技术)先发散、再收敛优先Happy-Path决策命令可多项业务规则识别命令触发角色(人、定时任务、外部API、前置事件触发)快速识别(可重复,再归并)概念模型领域事件决策命令领域名称规则外部系统解释说明定时任务运营酒店地址电话规格化城市信息补全酒店基本信息预处理获取已存在酒店tree基本信息长度限定校验国内酒店判断不可修改属性校验酒店tree酒店地址酒店电话城市酒店基本信息酒店tree聚合合规性已校验系统策略选择规则聚合策酪
9、选择聚合策略聚合策略已选择系统酒店tree聚合酒店tree酒店tree已聚合聚合策整有多种,不同的聚合策整流程不同,示例不做展开系统系统酒店tree基础属性变更酒店tree更新酒店tree酒店tree已更新酒店去重规则酒店tree去重酒店tree酒店tree已去重酒店异常标记撤销酒店异常标记酒店异常标记已撤销酒店tree代理商酒店信息变更消息已发送酒店异常标记规则酒店异常标记酒店异常标记酒店异常已标记酒店异常标记邮件发送酒店异常标记酒店异常标记邮件已发送若酒店聚合失败且符合异常标记规则系统代理商酒店tree变更消息系统识识别别领领域域事事件件识识别别决决策策命命令令识识别别领领域域名名词词问问
10、题题域域分分析析统一语言-什么都可以作为团队的统一语言进行记录,共识,并在团队内部进行使用源自领域模型的概念与逻辑(某个实体、业务逻辑、领域逻辑、术术语语表表-中中英英文文)限界上下文(上下文名称以及任何想要表达的概念)系统隐喻(价值与业务模式维度上的补充与扩展)职责的分层(责任分层关注“稳定性”,哪些是稳定而哪是易变的)业务规则、流程与实现模式02、改变关联的模型03、重新提取技术侧01、重构04、接收技术发起的模型改动代代码码实实现现模模型型统统一一语语言言统统一一语语言言都都可可以以包包括括什什么么?赋予技术定义业务的权力业务和技术方更好的协同方式的可能性降低业务认知成本统统一一语语言言
11、有有什什么么好好处处?技技术术侧侧业业务务侧侧识识别别限限界界及及子子域域划划分分识别限界上下文-先先业业务务,后后技技术术。业业务务边边界界-工工作作边边界界-应应用用边边界界降降低低业业务务复复杂杂度度降降低低管管理理复复杂杂度度降降低低技技术术复复杂杂度度 上下文(Context)其实是动态的业务流程被边界(Bounded)静态切分的产物识识别别限限界界及及子子域域划划分分识别限界上下文自自治治单单元元最最小小完完备备自自我我履履约约稳稳定定空空间间独独立立进进化化限限界界上上下下文文特特征征双向依赖循环依赖(如物理酒店上下文)过长的依赖(非直接依赖)上上下下文文依依赖赖地地图图限限界界
12、上上下下文文依依赖赖3 3不不原原则则共享内核客户方-供应方开发遵奉者团团队队协协作作模模式式防腐层开放主机服务发布订阅通通信信集集成成模模式式酒酒店店解解析析酒酒店店抓抓取取上上下下文文静静态态信信息息代代理理商商酒酒店店聚聚合合ACLOHSPLOHSPLOHSPLACL物物理理酒酒店店上上下下文文ACLOHSPLOHSPLACLUUUUDDDDD地地理理信信息息ACLACLDDUACLDU识识别别限限界界及及子子域域划划分分子域划分根据“每一个问题子域负责解决一个有独立业务价值的业务问题”的视角出发结合业务价值分析(愿景)划分核心、通用、支撑域问问题题子子域域划划分分原原则则领领域域建建模
13、模领域分析聚合来表达业务“高内聚,低耦合”降低业务复杂度,更好的适应业务变化建建模模意意义义识别实体、值对象、丰富领域逻辑定义聚合、识别聚合根建建模模过过程程重重点点关关注注核核心心域域建建模模聚合尽量小,适应业务变化聚合边界内强一致性抽抽象象模模型型,防防止止过过多多属属性性拍拍平平(D DP P)建建模模原原则则循循环环提提炼炼的的过过程程领领域域建建模模源自问题域自身的逻辑,是运运营营中中立立而领域特定的,其复杂度来自于问问题题本本身身,关注点通常是算法、计划、统计、优化等等源自业业务务运运营营的的逻逻辑辑,是领域中立且运营特定的,其复杂度来自于业业务务流流程程,关注的是如如何何通通过过
14、某某个个领领域域逻逻辑辑实实现现获获利利。因而它的关注点,就集中在盈利和成本结构上。或者说,业务逻辑对外体现为利润或现金,对内体现为成本和绩效承诺领领域域逻逻辑辑业业务务逻逻辑辑没没有有完完美美的的模模型型,甚甚至至连连正正确确的的模模型型也也没没有有,领领域域模模型型共共识识即即正正确确领域分析领领域域建建模模业务服务划分业业务务边边界界(限限界界上上下下文文/聚聚合合)业业务务变变更更频频率率康康威威定定律律技技术术异异构构非非功功能能需需求求(如如质质量量属属性性)团团队队规规模模弹弹性性边边界界微微服服务务可可以以包包含含多多个个限限界界上上下下文文,但但是是只只能能包包含含一一种种子
15、子域域类类型型(核核心心、通通用用、支支撑撑)模模型型实实现现业务流程与领域模型映射业务流程自上而下结构化分解分层映射,隔离技术负责度模模型型映映射射代代码码清清单单循循环环提提炼炼的的过过程程模模型型实实现现COLA应用分层架构以以业业务务为为核核心心,解解耦耦外外部部依依赖赖,分分离离业业务务复复杂杂度度和和技技术术复复杂杂度度S St ta ar r9 9.8 8K K定义良好的分层结构、规范层内部结构“聚合分包,功能分类”提供最佳应用架构的最佳实践A Ad da ap pt to or r C Cl li ie en nt t 多端适配 业务提供的接口,如DubboA Ap pp p
16、业务用例Case的编排,含executor、publish、qschedule等D Do omma ai in n(聚聚合合、实实体体、值值对对象象的的定定义义)业务规则显示化,包括逻辑判断,和对象设值代表的含义,纯内存操作 Entity解决单个对象的逻辑变更,领域服务解决多对象的业务逻辑变更 不允许跨聚合调用 充血模型I In ns sf fr ra as st tr ru uc ct tu ur re e C Co ommmmo on n Repisitory实现 公共属性、工具类,由domain调用 ACL的定义和实现模模型型实实现现COLA应用分层架构S St ta ar r9 9.8
17、 8K KC CO OL LA A架架构构落落地地C CO OL LA A应应用用架架构构落落地地模模型型实实现现领域模型与代码模型映射聚聚合合分分包包功功能能分分类类P Pa ac ck ka ag ge e包包使使用用领领域域划划分分(聚聚合合),而而不不是是功功能能职职责责划划分分,增增加加代代码码的的内内聚聚性性,符符合合演演进进式式架架构构聚聚合合分分包包功功能能分分类类模模型型实实现现领域模型与代码模型映射D DP P特特征征拥有完整的概念整体,精准定义使用业务域中的原生语言业务域的最小组成部分,可构建复杂组合隐式转显式D DP P是是什什么么?Domain Primitive 是
18、 Value Object 的进阶版,在原始 VO 的基础上要求每个DP拥有概念的整体,而不仅仅是值对象。在 VO 的 Immutable 基础上增加了 Validity 和行为0 05 5总总结结和和思思考考项项目目落落地地效效果果组织资源是否集中在了核心业务领域是否能用统一语言沟通描述业务,表现在需求评审、站会等有关会议的效率上领域知识是否得到沉淀,是否有人能承担领域专家团队间职责模糊地带少,相互扯皮的机会少组组织织效效率率模块粒度是否合适、模块间依赖是否健康接口数量是否稳定,不膨胀因为功能理解不足引起的bug数量是否低模块和接口的自测性程度高不高代码可读性,人员交接和新人上手是否足够快开
19、开发发效效率率清晰领域,核心子域重点投入统统一一语语言言,减减少少产产运运研研测测沟沟通通成成本本,增增加加2 2名名研研发发业业务务专专家家承承接接产产品品需需求求7 75 5%,助助力力0 0.5 5P PMM21个应用微服务,通过DDD领域划分后下降到13个,微服务减少33%开发工时3pd以下产品响应效率提升52.3%,3pd以上32.5%,QA工时下降62.3%架架构构、聚聚合合分分层层,功功能能分分类类,新新人人上上手手快快巩巩固固效效率率之之本本,分分担担产产品品之之忧忧如如何何寻寻找找业业务务专专家家及及让让产产品品认认可可 D DD DD D 价价值值业务产品PM-资深技术团队
20、-技术负责人补位寻寻找找业业务务专专家家讲清楚系统现状,以及使用DDD重构后所带来的价值,达达成成价价值值共共识识(与产品,必要可能需要跟产品的上级)资源紧张情况下,重要需求正常排期,非重要与产品沟通延迟上线优先解决系统核心价值域问题,分阶段成果发布研发资源闭环和共享模式共存(闭环:专属业务需求响应,适合业务快速发展期,重构;共享:研发资源池,产品需求排期,适合于进入成熟期,稳定渐进发展的业务)产产品品不不关关心心是是否否使使用用D DD DD D,只只关关注注自自己己的的产产品品需需求求是是否否如如期期发发布布D DD DD D 带带来来思思维维模模型型的的改改变变用用户户视视角角以以用用户
21、户需需求求为为出出发发点点行行业业视视角角价价值值视视角角经经验验战战略略产产品品价价值值技术视角业务视角组织保障用用户户思思维维+技技术术思思维维+商商业业思思维维技技术术与与业业务务连连接接的的桥桥梁梁问问题题域域分分析析领领域域建建模模模模型型实实现现简单思维契约思维解耦思维产产品品思思维维模型思维抽象思维结构化思维分治思维被动理解业务-主动了解业务-解读业务策略变化-定义测量-提议数字化方案D DD DD D所所带带来来的的优优略略势势及及建建议议隐性知识显性化,统一团队语言围绕业务变化,隔离“变化”积木式组合业务演进关注点分离,隔离技术细节面向测试、运维业务思维(主动向前看业务,主动
22、提想法,0.5PM)优优势势业务场景复杂业务变化频繁重点核心业务领域可部分取用(分层思想、聚合、限界、架构设计、解耦思维等)团团队队共共识识即即正正确确 使使用用建建议议略略势势团队上手有门槛(概念-理解-困惑-深入理解)业业务务架架构构是是灵灵魂魂,技技术术架架构构是是容容器器,脱脱离离灵灵魂魂得得容容器器是是没没有有意意义义的的!参参考考资资料料 1领域驱动设计 Eric Evans 2DDD 实战课 欧创新 3如何落地业务架构 徐昊 4实现领域驱动设计Vaughn Vernon 5领域驱动设计模式、原理与实践Thoughtworks 工作坊 6程序员的底层思维张建飞 7 The Clean Architecturehttps:/ Robert C.Martin 8 The Onion Architecturehttps:/ Palermo 9Clean Object-Oriented and Layered Architecturehttps:/ 张建飞T TH HA AN NK KS S