机票辅营DDD的分层架构设计

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 机票辅营DDD的分层架构设计 钟福海/机票辅营
2. 自我介绍 2018年12月加入去哪儿,负责机票辅营业务开发和系统重构 热衷于通过技术升级解决业务痛点问题,提升复杂系统可维护性 课程背景 DDD基础和DDD实践(已完结)侧重DDD方法论(工具应用) 业务架构(进行中),侧重业务实践(项目经验) 内容介绍
3. 案例1:供应系统DDD实践 CONTENTS 目录 案例2:交易系统DDD实践
4. 背景:辅营介绍 01 辅营业务场景 02 辅营业务边界
5. app首页 机票首页
6. 航班列表 OTA列表 填单页 详情
7. 售前 售后
8. 辅营业务边界
9. 背景:供应系统介绍 第一个用DDD设计的系统 从辅营交易系统拆分出来 定位是负责与供应商交互 主要处理权益的发/查/废业务
10. 案例1:供应系统DDD分层设计 01 领域模型(战略设计) 02 CQRS(战术设计) 03 整洁架构(战术设计) DDD = 领域模型(构建步骤)+ 分层架构(技术方案)
11. 回顾:DDD设计流程 来源:https://mp.weixin.qq.com/s/JlIHUTRwpJMyenDb_LhOeg
12. 回顾:常规的战略设计流程 来源:https://mp.weixin.qq.com/s/JlIHUTRwpJMyenDb_LhOeg
13. 1、领域模型:供应系统战略设计 场景分析 业务专家基于业务场景,划分供应子系统(领域划分) 事件风暴 业务专家根据发/查/废/使用等用例,识别领域对象和行为
14. 回顾:常规领域模型 来源:https://mp.weixin.qq.com/s/JlIHUTRwpJMyenDb_LhOeg
15. 1、领域模型:供应系统的实现
16. 1、领域模型:供应订单域代码落地
17. 回顾:DDD的分层架构 来源:https://mp.weixin.qq.com/s/JlIHUTRwpJMyenDb_LhOeg
18. 2、CQRS:概念 独立模型 模型共用 来源:https://martinfowler.com/bliki/CQRS.html
19. 2、CQRS:优势 来源:https://processon.com/view/5d6c8dbee4b0f425534784f8
20. 2、CQRS:供应系统的实现
21. 回顾:整洁架构 分层解耦 单向依赖 来源:https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html
22. 3、整洁架构:use case代码举例
23. 案例1:供应系统总结 背景:新系统,业务明确 工具:DDD建模 落地:整洁架构+CQRS
24. 辅营交易系统重构的背景 客观原因:业务复杂 8核心系统10+关联系统 6年36.5万行 频繁变更 直接原因:缺设计和规范 成本压力 直接影响:维护成本高 难复用,难更改 难理解,难测试 发展诉求:支撑更多业务线 火车,酒店,国际 超商,会员,分销
25. 思考: DDD做设计 VS 做参考? DDD做设计(自顶向下,有条不紊) 资源,团队,时间 DDD做参考(抓大放小,各个击破) 重点,变通,演进
26. 案例2:辅营交易系统DDD的过渡 01 业务梳理(可维护性) 02 封装变化(可扩展性) 03 模块划分(可维护性) 04 分层测试(可维护性)
27. 1、业务梳理:领域建模还可以这么整? 售前 售后
28. 1、业务梳理:系统边界=限界上下文?
29. 1、业务梳理:重新梳理核心用例?
30. 高频需求都这么麻烦?
31. 2、封装变化:背景 看哪里 业务很发散 调用链路深 圈复杂度高 劣质&有毒 改哪里 霰弹式开发 测试链路长 踩坑&挖坑
32. 2、封装变化:解决方案
33. 2、封装变化:效果
34. 交易系统封装变化
35. 交易系统封装变化
36. 2、封装变化:总结 看哪里 业务梳理(文档) 单元测试(校验) 接口抽象(及时 ) 改哪里 桥接模式(扩展) 接口抽象(解耦)
37. 3、模块划分:背景
38. 3、模块划分:领域模型的问题
39. 3、模块划分:领域模型的改进
40. 3、模块划分:贫血模式的聚合根
41. 3、模块划分:系统架构图 业务控制流程图 分层架构逻辑视图
42. 3、模块划分:整洁架构代码实现
43. 3、模块划分:控制流程图
44. 3、模块划分:重构前的业务流程
45. 3、模块划分:重构后的业务流程
46. 交易模块划分
47. 3、模块划分:辅营交易的控制流程图
48. 3、模块划分:从adapter看控制流
49. 4、分层测试:重构代码的测试
50. 案例2:交易系统总结 背景:老系统,业务繁杂 工具:DDD建模+架构演进 落地:整洁架构+Use Case
51. 分层测试:分层测试有哪些优势? 降低测试复杂度(跨层/mock) 方便分工协作:(分层解耦) 方便独立维护:(高内聚) 利于规范检查:(高质量,好测试)
52. 分层测试:微服务测试关注点 来源:https://martinfowler.com/articles/microservice-testing
53. 分层测试:常规的分层测试举例
54. 分层测试:辅营交易的测试现状 现状: 测试包没按照整洁架构分层 测试用例按照分层关注点组织 改进: 源码和测试包按分层拆分物理组件 用archunit检查架构和包结构约束
55. 课程总结 协议 统一标准,共同视角 分治 化繁为简,各个击破 分层 依赖倒置,分层解耦 演进 抓大放小,先易后难,完成胜于完美
56.

Home - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-16 18:48
浙ICP备14020137号-1 $Map of visitor$