手把手教你落地DDD

手把手教你落地DDD / 25年技术老兵的DDD学习指南

钟敬 Thoughtworks首席咨询师、数字化转型与运营团队DDD负责人
  • 课程目录
  • 课程介绍
  • 在线阅读:开篇词|带你吃透DDD

    在开发微服务,遗留系统改造、架构治理、企业架构、研发效能提升、架构师培养等很多方面,DDD都有用武之地。

  • 01|DDD小传:领域驱动设计为什么这么火?

    DDD为什么在这几年又火起来了呢?这节课会为你揭秘。

  • 02|迭代一概述:怎样开启一个麻雀虽小五脏俱全的项目?

    这节课,我们将概述迭代一的目的和需求,并且为你介绍DDD的基本开发过程。

  • 03|事件风暴(上):怎样和业务愉快地聊需求?

    这节课开始,我们会根据DDD的基本开发流程,使用事件风暴方法来进一步梳理需求。这节课先聚焦于第一步,识别领域事件。

  • 04|事件风暴(下):事件风暴还有哪些诀窍?

    这节课里,我们来一起完成事件风暴的另外两步,识别命令和识别领域名词,之后再归纳一下事件风暴的作用以及实操中的常见问题。

  • 05|领域建模实践(上):怎样既准确又深刻地理解业务知识?

    建立领域模型是DDD的核心,要做好领域建模,需要理论和实践相结合。

  • 06|领域建模实践(下):领域建模还有什么其他技巧?

    今天我们在上节课的基础上,继续对项目管理和工时管理进行领域建模。

  • 07|领域建模原理:DDD领域建模和传统方法有什么区别?

    今天我们上升到理论层面,一起来理解模型驱动设计的本质含义。然后再来深入探讨“统一语言”,以及它和领域建模的关系。

  • 08|数据库设计:怎样按领域模型设计数据库?

    怎样由领域模型,一步一步地推导出数据库的设计呢?这种方法和以前的方法有什么不同呢?

  • 09|分层架构:怎样逃离“大泥球”?

    学完这节课,希望你能理解分层架构背后的原理,然后针对自己项目中存在的痛点进行权衡,形成适合自己项目的架构规范。

  • 10|代码实现(上):要“贫血”还是要“充血”?

    接下来三节课,我们会学到DDD在实现层面的几个模式。今天,我们会讨论面向对象和面向过程间的权衡,然后在重点解决层间依赖问题。

  • 11|代码实现(中):怎样创建领域对象、实现领域逻辑?

    这节课,主要讲的是领域逻辑的实现和领域对象的创建,此外还进一步探讨了程序里模块的划分问题。

  • 12|代码实现(下):怎样更加“面向对象”?

    今天我们会继续开发**修改组织**功能,结合这个功能的开发,看看怎样运用封装和继承。

  • 13|迭代二概述:怎样更深刻地理解领域知识?

    我们即将进入第二个迭代,一起学习几个DDD里更高级的实践和模式,带你逐步提升领域建模能力,更深刻地理解领域知识。

  • 14|聚合的概念:怎样保护业务规则?

    聚合就是保护业务规则的一种有效手段,这节课我们先来理解聚合的概念和领域建模。

  • 15|聚合的实现(上):怎样对聚合进行封装?

    聚合的一个主要特征是具有不变规则。而维护不变规则的前提是要做好对聚合的封装

  • 16|聚合的实现(中):怎样实现不变规则?

    今天我们继续来讨论怎样为聚合实现不变规则。

  • 17|聚合的实现(下):怎样用事务保护聚合?

    今天我们主要会解决聚合的修改问题,以及在并发环境下保护聚合不变规则的问题。

  • 18|值对象(上):到底什么是值对象?

    人们建模的时候,一般都只重视实体,对值对象的研究不够。

  • 19|值对象(中):值对象有什么好处?

    我们花了这么大的功夫来区分**实体**和**值对象,**那么识别值对象有什么好处呢?

  • 20|值对象(下):值对象和实体的本质区别是什么?

    实体和值对象有这种区别的根源是什么?如果不理解这一点,在遇到一些疑难问题的时候,仍然无法分辨。

  • 21|用“限定”建模:怎样简化一对多关联?

    “限定”可以使模型的语义更加丰富,把原来只能用注释表达的约束,变成更严格的符号,并且一目了然地表达出这种约束。

  • 22|泛化建模(上):领域知识更抽象怎么办?

    泛化是领域建模技能由初级水平迈向中、高级水平的门槛。

  • 23|泛化建模(中):可以不用泛化吗?

    事实上,用不用泛化有时不是一个非黑即白的决定,而是一种权衡。

  • 24|泛化建模(下):怎样权衡是否采用泛化?

    是否要采用泛化,有时并没有唯一正确的答案,而是个权衡问题。这节课,我们一起尽量找出一些规律性的东西,以便你能尽快形成“感觉”。

  • 25|泛化的实现(上):怎样为泛化设计数据库?

    为泛化关系进行数据库设计时,主要考虑两个问题:一个是建几张表;另一个是怎样确定主键。

  • 26|泛化的实现(下):怎样为泛化编写代码?

    泛化的编码主要解决的问题就是,怎么把内存中的对象和数据库表里的数据进行相互转换。

  • 27|迭代三概述:怎样处理规模更大的系统?

    在接下来的第三个迭代中,我们会结合“卷卷通”公司的新需求进一步思考和实战,深化DDD的相关技能。

  • 28|限界上下文(上):怎样为更大的需求建模?

    让我们暂时忘掉“限界上下文”这个本身,先回到我们的项目,一步一步地理解这个模式的概念和用法。

  • 29|限界上下文(中):限界上下文怎样影响架构设计?

    今天我们继续完成“工时管理”上下文,帮你进一步深化这两个概念。然后,我们会根据限界上下文来完成架构设计。

  • 30|限界上下文(下):限界上下文之间如何集成?

    在云原生的情况下,一般不会采用单体架构,微服务才是最佳实践。那么微服务应该怎么设计呢?

  • 31|CQRS(上):实现查询功能有什么诀窍?

    通过领域模型来实现查询功能,常常是比较繁琐的,而且性能也不高。因此, CQRS 就成了 DDD 的有力补充。

  • 32|CQRS(下):CQRS还有哪些变化?

    当我们遇到更高的并发性能需求时,就要考虑分布式程序和数据库了。这就是今天的两种策略要解决的问题。

  • 33|分析模式初探:怎样解决更复杂的问题?

    一节课“打通任督二脉”,带你领略常用的分析模式和使用方法。

  • 34|落地经验:怎样在实际项目中推广DDD?

    这节课,我把我在不同企业中推广 DDD 的一些心得分享出来,相信会对你有所帮助。

  • 加餐1|小试牛刀,测测你对DDD的掌握情况

    为了让你过节期间能够轻松一些,我为你安排了几期特别策划的内容。今天我们先检验一下学习成果。

  • 加餐2|读这些书,帮你学懂DDD

    这节课是春节策划的第2期,我们谈谈学习DDD可以读什么书。同时,我也会分享一些自己的读书体会,希望我们共同进步。

  • 加餐3|这些书里,藏着高手们的“不传之秘”

    虽然春节长假转瞬即逝,但今天我们还是给春节策划收个尾,继续说说能帮你落地 DDD 的相关图书。

  • 加餐4|建模作业点评直播回放&获奖公示

    活动告一段落,学习和交流仍在继续。学完课程的迭代一之后,可以继续挑战这道建模题目,动手练习之后再来观看老师的直播回放。

  • 加餐5|DDD很难,学不会怎么办?

    我们特别安排了这期“相对轻松”的话题,邀请钟老师分享一下自己是怎样和DDD结缘的,说不定老师的学习经历和思考感悟,能给你一些启发。

  • 用户故事|优秀软件方法学“漫游记”

    很高兴能和你分享我学习DDD的体会,课程里有很多值得反复咀嚼的内容,我会分享一些印象最深刻的点。

  • 特别策划|AI是银弹么?

    今天,我将会从“没有银弹”这个原理说起,和你探讨AI的能力边界。

  • 特别策划|AI时代程序员生存之道

    在 AI 时代,开发人员应该更加注重发展哪些能力?

  • 结束语|DDD,是技术也是艺术

    低代码和人工智能会让程序员失业吗?如果你能够“抓住本质”,就能……

  • 期末测试|来赴一场满分之约!

    《手把手教你落地DDD》课程已完结,来赴一场满分之约!

45讲

「交流群入口」


你将获得

  • 20+ DDD 核心概念与模式
  • 三个迭代体验 DDD 落地闭环
  • 通过领域建模深入理解业务需求
  • 企业落地 DDD 的排坑指南

讲师介绍

在 IT 界从业 20 余年,先后在中国人寿、中意人寿、友邦资讯、Thoughtworks 等公司任职,带领团队成功地开发与维护了多个系统,并负责公司的敏捷转型及企业架构工作。

擅⻓面向对象软件开发方法学、领域驱动设计方法、演进式架构、敏捷及精益开发方法,注重学习和推广软件开发的最佳实践,提倡工匠精神。是 Martin Fowler 《分析模式》的译者,还参与审校了《领域特定语言》《DDD 十五年》。


课程介绍

DDD(领域驱动设计),在软件工程里属于软件开发方法学的范畴。它继承了面向对象和敏捷方法的精华,并提炼了一套更容易掌握的原则、模式和实践,特别适合复杂的企业应用的开发。

DDD 在开发微服务,遗留系统改造、架构治理、企业架构、研发效能提升、架构师培养等很多方面,都有用武之地。然而,DDD 想要学习和落地并不容易,主要有以下难点:

  • 领域模建模不好掌握;
  • 领域模型不好实现;
  • 概念混乱,资料良莠不齐;
  • 技术环境还是开发理念,随时代有所变化;
  • 有很多具体落地时才会遇到的问题。

为此,我们邀请了 Thoughtworks 首席咨询师钟敬老师,带你扫清以上学习障碍。钟老师将结合自己多年的项目实践经验和培训经验,带你循序渐进地学习、训练。跟着课程一步步建模型、写代码,拾级而上,你将深刻理解 DDD 的重要概念、原理,掌握 DDD 最核心的技能。

课程特色

本课程以案例为导向,模拟了敏捷软件开发过程,老师将结合一个企业管理系统案例,带你体验这该系统的三个迭代。每个迭代的需求规模逐渐扩大,复杂性也逐渐增加,相应也会让你不断深化与之对应的 DDD 模式和实践。

迭代一:打通 DDD 的最小闭环

迭代一主要会带你夯实基础,实现一个“麻雀虽小、五脏俱全”的项目。打通从需求分析,到领域建模,再到架构设计,最后到数据库和代码实现的完整闭环。学完这个迭代,你就有能力处理一些不太复杂的项目了。

迭代二:聚合、值对象和泛化

迭代二会深入讲解 DDD 里争议较大,不太好掌握的内容,包括聚合、值对象等等。同时,还会进一步带你提升领域建模能力,深化对分层架构和代码封装的理解。最后,还会学习重要的建模技巧——泛化,这是领域建模由初级走向中、高级的关键技能。学完这个部分,你会有渐入佳境的感觉。

迭代三:进阶建模、架构和落地技能

迭代三会重点讲解 “限界上下文”、事件驱动和 CQRS 等模式,也你深入讨论怎样为更加灵活多变的业务建模,帮你深化对泛化的理解。还会讲到实践落地的关键要点,比如 DDD 切入点的选择,遗留系统的改造等等。学完这个部分,你将掌握更高阶的 DDD 技能,了解如何应对更大范围的项目。


课程目录


订阅须知

随机推荐

金士达医疗口罩评测性价比高吗?图文解说评测,简明扼要!

金士达医疗口罩适合入手吗?真实评测体验曝光!

金士达医疗口罩实际效果怎样?专家评测分析?

金士达医疗口罩怎么样?三分钟了解评测?

欧格斯通用型使用怎么样?深度爆料评测分析?

欧格斯通用型用户体验如何?真实评测报告?