DDD实战课
欧创新
人保高级架构师
立即订阅
5014 人已学习
课程目录
已完结 23 讲
0/2登录后,你可以任选2讲全文学习。
开篇词 (1讲)
开篇词 | 学好了DDD,你能做什么?
免费
基础篇 (5讲)
01 | 领域驱动设计:微服务设计为什么要选择DDD?
02 | 领域、子域、核心域、通用域和支撑域:傻傻分不清?
03 | 限界上下文:定义领域边界的利器
04 | 实体和值对象:从领域模型的基础单元看系统设计
05 | 聚合和聚合根:怎样设计聚合?
进阶篇 (6讲)
06 | 领域事件:解耦微服务的关键
07 | DDD分层架构:有效降低层与层之间的依赖
08 | 微服务架构模型:几种常见模型的对比和分析
09 | 中台:数字转型后到底应该共享什么?
10 | DDD、中台和微服务:它们是如何协作的?
答疑:有关3个典型问题的讲解
实战篇 (10讲)
11 | DDD实践:如何用DDD重构中台业务模型?
12 | 领域建模:如何用事件风暴构建领域模型?
13 | 代码模型(上):如何使用DDD设计微服务代码模型?
14 | 代码模型(下):如何保证领域模型与代码模型的一致性?
15 | 边界:微服务的各种边界在架构演进中的作用?
16 | 视图:如何实现服务和数据在微服务各层的协作?
17 | 从后端到前端:微服务后,前端如何设计?
18 | 知识点串讲:基于DDD的微服务设计实例
19 | 总结(一):微服务设计和拆分要坚持哪些原则?
20 | 总结(二):分布式架构关键设计10问
结束语 (1讲)
结束语 | 所谓高手,就是跨过坑和大海!
DDD实战课
登录|注册

19 | 总结(一):微服务设计和拆分要坚持哪些原则?

欧创新 2019-11-27
你好,我是欧创新。
我们前面已经讲了很多 DDD 的设计方法和实践案例。虽然 DDD 的设计思想和方法很好,但由于企业发展历程以及企业技术和文化的不同,DDD 和微服务的实施策略也会有差异。那么面对这种差异,我们应该如何落地 DDD 和微服务呢?今天我们就来聊聊微服务的设计原则和演进策略。

微服务的演进策略

在从单体向微服务演进时,演进策略大体分为两种:绞杀者策略和修缮者策略。

1. 绞杀者策略

绞杀者策略是一种逐步剥离业务能力,用微服务逐步替代原有单体系统的策略。它对单体系统进行领域建模,根据领域边界,在单体系统之外,将新功能和部分业务能力独立出来,建设独立的微服务。新微服务与单体系统保持松耦合关系。
随着时间的推移,大部分单体系统的功能将被独立为微服务,这样就慢慢绞杀掉了原来的单体系统。绞杀者策略类似建筑拆迁,完成部分新建筑物后,然后拆除部分旧建筑物。

2. 修缮者策略

修缮者策略是一种维持原有系统整体能力不变,逐步优化系统整体能力的策略。它是在现有系统的基础上,剥离影响整体业务的部分功能,独立为微服务,比如高性能要求的功能,代码质量不高或者版本发布频率不一致的功能等。
通过这些功能的剥离,我们就可以兼顾整体和局部,解决系统整体不协调的问题。修缮者策略类似古建筑修复,将存在问题的部分功能重建或者修复后,重新加入到原有的建筑中,保持建筑原貌和功能不变。一般人从外表感觉不到这个变化,但是建筑物质量却得到了很大的提升。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《DDD实战课》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(10)

  • 陈华应
    老师这篇是看的最慢的一篇,一边看,一边思考现在团队负责的业务以及服务,有很多很多值得警惕和借鉴以及深思的地方!
    前面在看微服务实例讲解的时候一度陷入战术模型中出不来,想着现在团队微服务的结构以及实现方式像,也不像ddd。一直也知道战略比战术更重要,直到看到今天的文章,才恍然,从ddd学到的更多是他的分析过程的方法论,设计思想,至于实际落地,要结合各种因素来权衡利弊做更合适现状的架构设计方案和具体实现方式。

    注重道而不是术!

    作者回复: 把DDD当成工具和方法,不要让它束缚了思想。

    2019-11-27
    2
  • Jxin
    感谢老师的分享。限于篇幅啊,意犹未尽的感觉。

    作者回复: 很多的感悟,^_^。

    2019-11-27
    1
  • vivi
    刚开课就跟着学习,课程结束了把新项目用DDD实践了下,收获满满。非常感谢作者~

    作者回复: 以后多交流。

    2019-12-05
  • AlexHuang
    感谢欧老师,学习这门课受益匪浅!

    作者回复: 谢谢!

    2019-12-01
  • sqyao
    考虑新老系统之间服务和业务的兼容,必要时可引入防腐层。请问老师,这里的防腐层指的是什么?

    作者回复: 防腐层是为了屏蔽系统之间的相互影响,保证领域模型的纯洁性,在微服务增加一些代码进行业务适配,比如新老系统的协议转换等。

    2019-11-29
  • Geek_1c00cb
    请教个问题,对于订单和订单明细,尤其是针对订单明细,还有其它业务需要其id做关联,这种情况如何设计聚合根,分别做聚合根,还是用订单做聚合根?

    作者回复: 订单是聚合根,它引用订单明细就可以了哈。
    你说的其它业务需要ID做关联是什么样的场景呢?是货物运输单吗?运单引用订单后,再通过订单的查询就可以获取订单明细了。

    2019-11-27
  • 北天魔狼
    感谢老师!依赖倒置,代码复用,这俩是最浅显的好处。按照严格模式分层,天然支持微服务,支持多开发语言。🙏🙏🙏

    作者回复: 谢谢你的陪伴。

    2019-11-27
  • 云中漫步
    简单易懂,具有很强的实践性,学习成本也低。
    2019-11-27
  • 阿玛铭
    《诗经·蒹葭》“蒹葭苍苍,白露为霜,所谓伊人,在水一方。溯洄从之,道阻且长。溯游从之,宛在水中央。
    这就是极客时间课程经过老师总结得出结论,并给出具体结论。想验证结论是否正确,就要灵活组合运用演绎归纳(编码解码,务虚务实),自顶向下看结论是否有遗漏?(不可知论会对学员产生负面心里影响。)自底向上验证结论是否合理?
    2019-11-27
  • 瓜瓜
    感谢老师

    作者回复: 谢谢这段时间的陪伴。

    2019-11-27
    1
收起评论
10
返回
顶部