
领域驱动设计(DDD)
文章平均质量分 91
Thoughtworks思特沃克中国
这个作者很懒,什么都没留下…
展开
-
被误解的Event Sourcing
当我们决定使用Event Sourcing作为架构选择之时,通常我们也会选择DDD去构建得到领域事件。DDD里提到的Event指的是对系统状态产生改变的现实事件,同样我们在Event Sourcing的系统中存储的也是会导致系统状态改变的事件。似乎这两种不同的软件开发思想,对Event的认识有着不谋而合的默契。...原创 2022-09-06 17:30:00 · 882 阅读 · 0 评论 -
使用上下游思维实现系统解耦
本文将从服务间上下游的思维来讨论如何在系统架构演进过程中,持续的保持服务间的松耦合,实现解耦的目标。原创 2022-09-01 17:30:00 · 1999 阅读 · 0 评论 -
一部电梯引发的思考
电梯是上班族最常使用的工具之一。上班、下楼取快递、拿快递上楼、下楼取外卖、拿外卖上楼、下楼抽烟摸鱼、上楼、下班……每个人每天都要往返乘坐电梯很多次。而电梯的设计也是五花八门。最常见的莫过于想上楼就按上想下楼就按下,进了电梯想去几楼就按几楼的那种。而有的电梯为分流考虑分高低层、奇偶层;有的小区电梯为安全考虑进去之后需要刷卡才能按楼层键,且只能按你注册的那个楼层;也有的电梯可以在外面就选择楼层等等。而我最近的项目是给一个客户的系统做DDD改造,他们所在的大楼电梯比较新奇。你必须在电梯外面扫员工卡,然后在触摸原创 2021-08-10 15:51:15 · 221 阅读 · 0 评论 -
使用函数式语言建立领域模型
领域模型=代码如果说敏捷软件开发主张面对面沟通,通过快速迭代的手段,让有价值的软件尽早面向市场,从而适应快速变化的需求。那么DDD则为敏捷开发过程中的沟通形式,作出了进一步的补充。纵观DDD的所有环节,无一不是在打通领域专家和开发人员之间的沟通和交流。DDD的精髓在于通过让开发人员理解领域,进而让开发人员使用编程语言建立一个跟领域专家脑海中一致的领域模型,使得该领域模型成为大家共享知识的途径,这将有效的减少不同利益相关者的沟通及交流,确保所有人都在解决同一个问题。共享模型=代码=文档我还记得我的原创 2021-07-12 11:15:38 · 205 阅读 · 0 评论 -
再谈领域驱动设计
本文从需求分析到API设计,试图描述领域驱动设计的过程及思想。同时也能看的出领域驱动设计并不是孤立存在的,它为解决开发团队和业务人员之间沟通而生,进而驱动微服务的划分以及API的设计。作为一个领域驱动设计的实践者,我切实感受到了领域驱动为软件开发带来的好处,同时在实践领域驱动的过程中也感受到了困难,这种困难体现在工程实践的方方面面,例如什么是领域驱动的最佳设计?如何把书本上的设计灵活的应用在自己的项目上?如何跟团队成员就设计达成一致?本文尝试从领域驱动设计的目的出发,试图通过简单的描述来说明领域驱动.原创 2020-12-17 18:11:01 · 247 阅读 · 0 评论 -
使用 DDD 指导微服务拆分的逻辑
对于服务拆分的逻辑来说,是先设计高内聚低耦合的领域模型,再实现相应的分布式系统。服务的划分有一些基本的方法和原则,通过这些方法能让微服务划分更有操作性。最终在微服务落地实施时也能按图索骥,无论是对遗留系统改造还是全新系统的架构都能游刃有余。开发者在刚开始尝试实现自己的微服务架构时,往往会产生一系列问题 :微服务到底应该怎么划分?一个典型的微服务到底应该有多微?如果做了微服务设计,最后真的会有好处吗?回答上面的问题需要首先了解微服务设计的逻辑,科学的架构设计应该通过一些输入并逐步.原创 2020-12-15 18:06:08 · 1023 阅读 · 0 评论 -
使用DDD指导业务设计的一点思考
领域驱动设计(DDD) 是 Eric Evans 提出的一种软件设计方法和思想,主要解决业务系统的设计和建模。DDD 有大量难以理解的概念,尤其是翻译的原因,某些词汇非常生涩,例如:模型、限界上下文、聚合、实体、值对象等。实际上 DDD 的概念和逻辑本身并不复杂,很多概念和名词是为了解决一些特定的问题才引入的,并和面向对象思想兼容,可以说 DDD 也是面向对象思想中的一个子集。如果遵从奥卡姆剃刀...原创 2020-03-23 18:39:11 · 970 阅读 · 0 评论 -
后端开发实践系列——事件驱动架构(EDA)编码实践
在本系列的前两篇文章中,笔者分别讲到了后端项目的代码模板和DDD编码实践,在本文中,我将继续以编码实践的方式分享如何落地事件驱动架构。单纯地讲事件驱动架构(Event Driven Architecture, EDA),那是几十年前就出现了的话题;单纯地讲领域事件,那也是这些年被大量提及并讨论得快熟透了的软件用语。然而,就笔者的观察看,事件驱动架构远没有想象中那样普遍地被开发团队所接受。即便搞微...原创 2019-08-21 11:13:52 · 608 阅读 · 0 评论 -
端口和适配器架构——DDD好帮手
摘要本文源自2018领域驱动设计中国峰会《领域驱动设计与演进式架构专题》的Session之一,是其博客版在实践领域驱动设计时,可以挑选一些方法互为参照,端口和适配器架构概念简单,容易掌握,适合作为实践领域驱动设计的辅助方法。大概一个月前,在做2018年领域驱动设计大会预告的时候,上一届大会的主题演讲者肖然提出这样的担忧:工具和方法似乎没有很好地解决“落地难”的挑战没有一套方法能够打遍...原创 2019-08-09 10:09:50 · 941 阅读 · 0 评论 -
后端开发实践系列——领域驱动设计(DDD)编码实践
Martin Fowler在《企业应用架构模式》一书中写道:I found this(business logic) a curious term because there are few things that are less logical than business logic.初略翻译过来可以理解为:业务逻辑是很没有逻辑的逻辑。的确,很多时候软件的业务逻辑是无法通过推理而得到...原创 2019-07-31 10:08:37 · 762 阅读 · 0 评论 -
不就是个短信验证嘛,还真挺复杂的
「摘要」支撑子域是为了项目成功必须要处理的问题,但由于没有现成、成熟的解决方案,必须要定制,费时费力如果能恰当地识别支撑子域的边界,形成"可复用"的"解决方案",就可以将其从支撑子域简化为通用子域,降低成本和风险不就是个短信验证嘛,有这么复杂吗?前几天安全专家马伟发布了《不就是个短信登录API嘛,有这么复杂吗?》,文章从“新增手机号和短信验证码登录”简单的一句话需求最终演变为...原创 2019-05-24 10:44:11 · 565 阅读 · 0 评论 -
重读领域驱动设计——如何说好一门通用语言
在 DDD 中,通用语言是以限界上下文为边界的。如果一个产品或者项目有多个限界上下文,我们就需要为每个限界上下文定义通用语言。原创 2019-04-19 11:56:35 · 297 阅读 · 0 评论 -
DDD该如何学?
2006年,国内互联网才刚刚萌芽,大家甚至还不习惯网购,大多数在校生都在宿舍里刷魔兽世界副本。但企业软件开发却得到了蓬勃发展,各大公司和事业单位都纷纷进行信息化转型。然而大家很快发现,企业应用业务逻辑的复杂度要远远高于技术本身,且企业IT人员很难描述清楚他们真正的业务,广大程序员也普遍缺乏挖掘真正需求的能力。整个开发过程更多的是瀑布式,开发人员一次性收集需求,可能半年后才会和业务人员再次沟通。大...原创 2018-12-03 12:06:01 · 885 阅读 · 0 评论