DDD 实战课
欧创新
人保资深架构师
55517 人已学习
新⼈⾸单¥59
登录后,你可以任选2讲全文学习
课程目录
已完结/共 26 讲
开篇词 (1讲)
DDD 实战课
15
15
1.0x
00:00/10:18
登录|注册

开篇词 | 学好了DDD,你能做什么?

讲述:欧创新大小:9.40M时长:10:18
微服务设计原则和注意事项
前端应用设计思想
DDD知识点串联实战
微服务设计实战
中台和领域建模实战
中台设计思想
微服务架构模型
DDD分层架构
领域事件
限界上下文、实体、值对象、聚合和聚合根
领域、子域、核心域、通用域、支撑域
DDD核心知识体系
实战篇
进阶篇
基础篇
课程设计思路
DDD的应用困惑
DDD的知识点多且抽象
DDD的理解和实践经验
微服务设计和拆分问题
中台领域模型的重构
中台数字化战略转型
中台战略转型
微服务拆分和设计
微服务的价值
业务日渐复杂
微服务设计理念
深入探索传统企业中台数字化转型的技术和方法体系
专注领域驱动设计(DDD)实现中台业务建模
人保高级架构师
课程设计
专栏内容
DDD实践
欧创新
参考文章

该思维导图由 AI 生成,仅供参考

你好,我是欧创新,人保高级架构师,一名奋斗在软件架构一线十余年的技术人。
目前热衷于采用领域驱动设计(DDD)实现中台业务建模,专注基于 DDD 的微服务设计和开发等。另外,我也正在深入探索传统企业中台数字化转型的技术和方法体系。很高兴在这个专栏和你见面!

我与 DDD

说起 DDD 的实践,那就不得不提微服务了。2015 年,我刚开始接触微服务,那时候和别人去介绍微服务的设计理念,接受度并不高,毕竟大家普遍采用的还是集中式架构。
但即便是在四年前,业务的日渐复杂也是可以预见的,微服务的价值确确实实存在。我就从那个时候开始深入研究,作为公司的高级架构师,我也一直处于公司中台转型和微服务建设的一线。
这个过程中,我和我的技术团队踩过不少坑,最尖锐的一个问题是:“微服务到底怎么拆分和设计才算合理,拆多小才叫微服务?”而微服务的边界历来也是最容易产生争议的地方。
紧接着,阿里巴巴成功完成了中台战略转型。于是,很多大型公司也开启了中台数字化战略转型,中型公司也根据自身需求跃跃欲试。但也有很多公司由于历史原因,存在着大量系统重复建设的问题。
作为中台,需要将通用的可复用的业务能力沉淀到中台业务模型,实现企业级能力复用。因此中台面临的首要问题就是中台领域模型的重构。而中台落地时,依然会面临微服务设计和拆分的问题。这两个问题一前一后,放在任何一家公司,我想都是一个不小的挑战。
这也是我一直在探索和解决的问题。这两年,中台越来越火,微服务越来越热,参与的人越来越多。那是否有好的方法来指导中台和微服务的设计呢?
一次偶然的机会我接触到了 DDD,深入研究后,我发现,运用 DDD 设计思想实现的微服务边界确实清晰很多,业务领域划分也十分合理。后来,我和我的伙伴们用 DDD 做了很多的微服务实践。

关于专栏

有了这样一个基础,我开始尝试将我对 DDD 的理解和一些实践经验沉淀,并写了几篇文章发表在了 InfoQ 上。在读者的留言中,我发现很多人对 DDD 是有一定的了解的,但由于 DDD 的知识点多且较为抽象,体系庞大,又缺少实践经验和案例指导,很多人对 DDD 的应用都有这样那样的困惑,哪怕知道 DDD 的好处,但是也感到无从下手。
收到极客时间的邀请后,我就开始全力打造课程大纲,力求干货充盈,理论与实践并重。这做起来并不是一件轻松的事儿,专栏从确定主题到和你见面,已经耗时三个多月了。
DDD 虽然历史很久了,但它与微服务和中台设计的结合,却是一片很新的领域。早在 2003 年就诞生的 DDD,怎么来指导“迟到”近 20 年才大热的微服务设计呢?
我认为,要想应用 DDD,首要任务就是要吃透 DDD 的核心设计思想,搞清楚 DDD、微服务和中台之间的关系。中台本质是业务模型,微服务是业务模型的系统落地,DDD 是一种设计思想,它可以同时指导中台业务建模和微服务设计,它们之间就是这样的一个铁三角关系。DDD 强调领域模型和微服务设计的一体性,先有领域模型然后才有微服务,而不是脱离领域模型来谈微服务设计。
其次,就是通过战略设计,建立领域模型,划分微服务边界。这步是关键,你可以借助专栏中的一些经验。
最后,通过战术设计,我们会从领域模型转向微服务设计和落地。此时,边界清晰、可持续演进的微服务架构雏形就在你面前了。
遵循以上过程,这门课的设计思路也就诞生了。

关于课程设计

如果你以往对 DDD 的了解并不深入,甚至是第一次接触,你一定会觉得 DDD 的术语非常多,且非常陌生,这些术语之间的关系都算是个“拦路虎”。
搞懂这些之后呢,怎么应用它们,从何下手来设计领域模型等等这些问题又接踵而至。
如果你对 DDD 有过研究,在学会怎么用之后,你可能还会反过来想:“我费了这么大劲儿去搞懂它,那它到底会让我的系统变成什么样呢?可以解决什么具体问题?是不是真有大家说得那么好?”
这些都将是这个专栏要交付给你的内容。总结一下的话,我希望这个专栏能带给你这样几点收获:
用浅显易懂的案例带你了解 DDD 必知必会的 10 大核心概念,深入设计思想,厘清各知识域之间的关系;
用 DDD 分层架构带你弄懂微服务架构各层之间的关系,并完成微服务分层和代码模型设计;
用 DDD 战略设计和事件风暴带你完成领域建模和企业级中台业务建模;
用一个典型的案例带你完整走一遍 DDD 战略设计和战术设计的全流程,学习 DDD 在领域模型和微服务设计过程中的技术要点;
带你深化微服务架构设计原则和注意事项,建立适应你公司技术能力和文化的微服务,建立演进式的微服务架构。
希望这些收获能够给正在从事或者有兴趣深入了解微服务设计和中台的你,提供一些实质性的帮助。
在具体的课程设计上,我将内容分为了三大部分:基础篇、进阶篇和实战篇。下面我来逐一介绍一下。

基础篇

基础篇主要讲解 DDD 的核心知识体系,具体包括:领域、子域、核心域、通用域、支撑域、限界上下文、实体、值对象、聚合和聚合根等概念。我会用浅显易懂的案例带你理解它们以及它们之间的合作、依赖关系。

进阶篇

进阶篇主要讲解领域事件、DDD 分层架构、几种常见的微服务架构模型以及中台设计思想等内容。具体包括:
如何通过领域事件实现微服务解耦?
怎样进行微服务分层设计?
如何实现层与层之间的服务协作?
通过几种微服务架构模型的对比分析,让你了解领域模型和微服务分层的作用和价值。
另外,我还会介绍中台设计的核心思想,和你探讨如何实现前中后台的协同和融合?如何利用 DDD 进行中台设计?

实战篇

实战篇是我们专栏课程的重点,我准备了多个实战小项目。
中台和领域建模的实战:带你了解如何用 DDD 设计思想构建企业级可复用的中台业务模型,了解事件风暴以及用事件风暴构建领域模型的过程。
微服务设计实战:带你了解如何用 DDD 设计微服务代码模型,如何从领域模型完成微服务设计,建立领域模型与微服务代码模型的映射关系,如何完成微服务的架构演进等。
然后我会用一个典型的案例将 DDD 所有的知识点串联在一起,带你深入了解如何用 DDD 的设计思想来完成领域建模和微服务设计的全流程。
最后,我还会补充分享一个前端的最新设计思想,带你了解如何借鉴微服务的设计思想来设计前端应用,实现前端应用的解耦。同时,我还为你总结了微服务设计原则以及分布式架构设计的关键注意事项。
最后,我想说,DDD 看似复杂,可学习起来并不困难,多动手参与几次 DDD 事件风暴工作坊,你就能很快理解 DDD 的核心设计思想和设计过程,成功进阶了。
如果你的公司尚不能给你提供实战的机会,你可以在这里小试牛刀。
相信这个专栏会帮助你掌握一套完整而系统的基于 DDD 的微服务设计和拆分方法,明确从战略设计到战术设计的微服务标准设计过程,使得你的微服务设计思路能够更加清晰,设计过程更加规范,让你的中台和微服务落地如虎添翼。
最后,感谢你的关注。我也很想借此认识一下你,了解一下你对 DDD 都有哪些认知?是否有机会应用,学习过程中遇到过哪些困难?对这门课又有怎样的期待?欢迎你留言和我交流。
现在,就让我们一同开启 DDD 之旅吧!
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

欧创新的专栏课程《DDD实战篇》深入探讨了领域驱动设计(DDD)在中台业务建模和微服务设计中的应用。作者强调了DDD、微服务和中台之间的关系,将课程内容分为基础篇、进阶篇和实战篇,通过浅显易懂的案例和实践经验,带领读者深入理解DDD的核心概念和应用。实战篇重点介绍了中台和领域建模的实战,微服务设计实战以及前端应用的最新设计思想。通过课程,读者将能够深入了解微服务设计和中台,获得实质性的帮助,从而在实际工作中更好地应用DDD的设计思想。欧创新鼓励读者多动手参与DDD事件风暴工作坊,相信这个专栏能帮助读者掌握一套完整而系统的基于DDD的微服务设计和拆分方法,使微服务设计思路更加清晰,设计过程更加规范,让中台和微服务落地如虎添翼。

2019-10-14136人觉得很赞给文章提建议

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《DDD 实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(84)

  • 最新
  • 精选
  • errocks
    问一下, 这个专栏有学习群不

    编辑回复: 暂时没有,需要的小伙伴可以为errocks点赞,视人数而定。

    2019-10-27
    16
    543
  • Geek_88604f
    请问老师,中台和平台有什么区别与联系?

    作者回复: 平台只是将部分通用的公共能力独立为共享平台。虽然可以通过API或者数据对外提供公共共享服务,解决系统重复建设的问题,但这类平台并没有和企业内的其它平台或应用,实现页面、业务流程和数据从前端到后端的全面融合,并且没有将核心业务服务链路作为一个整体方案考虑,各平台仍然是分离且独立的。 中台来源于平台,但中台和平台相比,它更多体现的是一种理念的转变,它主要体现在这三个关键能力上:对前台业务的快速响应能力;企业级复用能力;从前台、中台到后台的设计、研发、页面操作、流程服务和数据的无缝联通、融合能力。 中台首先体现的是一种企业级的能力,它提供的是一套企业级的整体解决方案,解决小到企业、集团,大到生态圈的能力共享、联通和融合问题,支持业务和商业模式创新。通过平台联通和数据融合为用户提供一致的体验,更敏捷地支撑前台一线业务。

    2019-11-15
    10
    59
  • 吴建中
    关于区分平台与中台初步的认识,平台面向特定领域,偏技术,也有业务,避免重复建设,比如工作流引擎,移动平台,办公平台。平台之间是相对孤立的,在企业内会形成平台孤岛。而中台是企业级业务模型,面向的是业务,本质是业务,强调全局业务流,业务的互联互通,业务复用,相当于建立一个企业级的大系统,但不是单体应用,而是先从整体出发,再拆分成多个有内在关联的服务,由业务驱动各服务衔接。而技术上是通过微服务,分布式这种架构风格,来管理复杂度。微服务本来就复杂,需要成熟的平台,中间件,比如dubbou和springcloud,来降低复杂性。

    作者回复: 跟专栏的思路非常一致啊。

    2019-12-14
    4
    26
  • 流沙河
    个人的理解,中台的观察视角比较高一些,是给企业的高层人员的,是企业架构或者企业信息化整体战略的结果,阿里当时面临着天猫体系和淘宝体系以及聚划算等等多个相对独立的业务部门,各个业务部门的系统共享比较差,于是通过打造中台来将各个业务线的通用业务逻辑和通用系统抽取出来,逐步沉淀和优化,以至于后期各种新的业务应用可以快速的基于这套中台系统实现出来,形成了大中台小前台的状态,所以中台应该是一套通用业务系统的集合体。当然针对单个系统或者单个平台可以考虑微服务的系统架构设计,微服务系统的边界划分是个难题,DDD应该是个很好的设计思想。期待后续的课程。

    作者回复: DDD战略设计是用来建立业务模型的,适用于企业级的中台,同样也适用于项目级的领域建模。它的战术设计适用于微服务的设计,所以DDD是个好东西。希望能对你有所帮助。

    2019-10-14
    21
  • 天涯海峰
    实战课,开发语言用什么

    作者回复: DDD是一种架构设计方法,不限定语言,我习惯用JAVA,所以用JAVA做示例,你可以用你自己熟悉的语言来实战。

    2019-10-14
    16
  • Geek_778d19
    事件风暴工作坊?是指什么呢 ,如何参与进去?

    作者回复: 事件风暴类似头脑风暴,它是项目团队与领域专家聚集在一起,快速分析和分解复杂业务领域,完成领域建模的过程。 事件风暴是一项团队活动,项目团队通过头脑风暴的形式罗列出领域中所有的领域事件,整合之后形成最终的领域事件集合,然后对于每一个事件,标注出导致该事件的命令,再为每个事件标注出命令发起方的角色,命令可以是用户发起,也可以是第三方系统调用或者定时器触发等,最后对事件进行分类,整理出实体、聚合、聚合根以及限界上下文,建立领域模型。然后你就可以基于领域模型进行微服务设计了。

    2019-10-31
    3
    13
  • 特种流氓
    欧老师 可以讲讲 ddd与面向对象设计的区别及联系吗

    作者回复: DDD包括战略设计和战术设计,在战略设计时完成领域建模,战术设计实际上是落到了系统设计。它是根据领域模型中的领域对象以及他们的关系来完成设计,在这个设计过程中当然会有DDD战术设计自己的方法,比如聚合,实体,值对象,以及应用的内部分层架构,战术设计过程的大部分方法还是在用面向对象的设计方法。

    2019-10-29
    11
  • brant
    老师,请问一个问题。您觉得领域驱动的本质是啥,然后领域驱动的核心方法,实现策略是什么?

    作者回复: DDD和微服务其实都是从业务领域出发,将大的业务领域分解为小的子域,完成领域建模,用领域模型指导微服务设计和落地。两者都是采用分而治之的策略来降低业务领域认识和软件产品建设的复杂度。 领域驱动设计在领域建模的过程中最关键的就是完成了业务边界的划分,这个边界包括领域模型之间的边界,同时也包含了领域模型内部聚合之间的边界,有了这个边界就可以设计出高内聚低耦合的微服务。这是DDD战略设计阶段的关键内容。 而在DDD战术设计阶段,用DDD的分层架构实现微服务内各层之间解耦,很好的降低各层之间的依赖。在发生变化时,可以降低各层之间相互影响,保证各层模型的稳定。

    2020-04-08
    10
  • 雷霹雳的爸爸
    我算是刚入行时候案头就常备一本Eric Evans的 DDD(刚翻了一下是06年清华大学出版社的译本),别说真是少有的一本我从头到尾翻完了的书...但那时候看起来不啻为一本天书...只是我内心深处总是隐约觉得,终会有一天会在转角再次遇到他,果不其然,这本书在我桌上吃灰十年之后,随着微服务兴起,无论是理论领军人物Chris Richardson本尊,还是各路英豪,均又纷纷祭出DDD汲取养分,很难不让人重新对这本书,这些概念和方法重新产生兴趣,于是,为了表示尊敬,我在异步社区又入了一个电子书(应该是另一个译本),以数字化生存的方式让这本书继续在我这里吃灰,结果到现在自然还只剩下惭愧不已;这次,希望能跟随老师的专栏,把各路灰尘一扫而空,看看自己能否在此方向上有所真切的领悟,顺便瞄一瞄我这个做着运维管理工作但是深爱着DevOps工具的架构师最终的归宿到底是哪里...特么的本来是想来一篇檄文的,咋写着写着就这么伤感咧?

    作者回复: 😄,向执着于DDD的前辈致敬。

    2019-10-30
    3
    7
  • 葡萄吃葡萄皮
    现在对于DDD模型。持久化数据应该使用哪种比较合适?Mybatis?Spring Data JDBC? JPA?

    作者回复: DDD在基础层是通过仓储的控制反转的方式来实现应用与基础资源来解耦的。也就是说应用逻辑里面不应该含有基础资源的实现代码,SQL语句等与数据相关的代码不应放在业务逻辑代码来实现。以后如果需要换数据库的话,对应用逻辑影响相对会小很多。目前来说持久化的工具Mybatis可能会好一些。

    2019-10-17
    2
    6
收起评论
大纲
固定大纲
我与 DDD
关于专栏
关于课程设计
基础篇
进阶篇
实战篇
显示
设置
留言
84
收藏
99+
沉浸
阅读
分享
手机端
快捷键
回顶部