DDD领域驱动设计 - 入门介绍

DDD领域驱动设计

2004年,Eric Evans 出版了《领域驱动设计》一书,提出了针对业务领域建模的方法论和思想 - Domain Driven Design,简称DDD。DDD的核心思想,是从业务视角出发,根据限界上下文划分业务的领域边界,定义领域模型,确定业务边界。在微服务落地时,建立业务领域模型与微服务代码模型的映射,从而保证业务架构与微服务架构的一致性。

DDD是一种处理高度复杂领域的设计思想。DDD提出了一套核心构造块,如聚合、实体、值对象、领域服务、领域工厂、仓储、领域事件等。这些构造块是面向对象领域建模的最佳实践和标准。利用DDD分层架构、六边形、洋葱型等架构,可以达到分离业务复杂度和技术复杂度,让系统具备更强的扩展性和弹性。

DDD战略设计

从业务视角出发,划分业务的领域边界,建立基于通用语言和业务上下文语义边界的限界上下文,构建领域模型。而限界上下文就可以作为微服务拆分和设计的边界。领域的战略设计中的领域建模是一个从发散到收敛的过程,通常采用事件风暴工作坊方法。

事件风暴工作坊方法

  1. 针对业务领域,通过用例分析、场景分析和用户旅程分析等方法,尽可能全面地、不遗漏地梳理业务领域,发现这些业务领域中的命令、领域事件、领域对象以及他们的业务行为,并梳理出这些领域对象之间的关系,这是一个发散的过程。

  2. 我们将实现风暴过程中提取的实体、值对象和聚合根等领域对象,从不同的维度进行聚类,形成如聚合和限界上下文等边界,并在限界上下文边界内建立领域模型,这是一个收敛的过程。收敛输出的结果就是领域模型。如图:


    领域的限界上下文和聚合边界

DDD战术设计

从技术视角出发,侧重于领域模型的技术实现,按照领域模型完成微服务的开发和落地。战术设计会有聚合、聚合根、实体、值对象、领域服务、领域事件、应用服务和仓储等领域对象,这些领域对象以代码的形式映射到微服务中,完成设计和系统落地。

采用DDD设计的缺点

  1. 对开发人员要求相对较高,实现起来会有一定的复杂度

采用DDD设计的优点

  1. DDD是一套完整而系统的设计方法论,规范设计思路和设计过程,形成一套统一的开发设计标准
  2. DDD通过分治策略降低业务和系统建设的复杂度,建立稳定的领域模型,处理高度复杂业务领域的软件开发
  3. DDD领域建模,强调沟通合作,建立团队通用语言
  4. DDD设计有聚合、有边界,容易进行微服务拆分和系统重构

DDD、微服务、中台的关系

DDD是一种架构设计方法论,通过业务边界划分将复杂业务领域简单化,划分出清晰的业务领域和应用边界,从而很容易的实现微服务的架构演进。DDD将子域划分为核心子域、通用子域和支撑子域,目的是识别企业重点领域,有区别地确定战略资源的投入,投入重点自然是核心子域。我们看下DDD视角与中台视角的对应关系,如下图所示:


DDD视角和中台视角的领域分解过程

中台设计偏向于业务架构,形成中台的过程也是业务领域不断细分和能力沉淀的过程,在这个过程中,我们会对同类通用业务能力进行聚合和重构,再根据限界上下文和业务内聚的原则建立领域模型。DDD战略设计最擅长的就是领域建模。在完成中台的领域建模后,领域模型就可以作为微服务设计的输入。限界上下文和领域模型可以作为微服务拆分和设计的边界和依据。如下图所示:

DDD战略设计和战术设计

因此,业务中台和微服务是DDD实战的最佳场景。


DDD、中台和微服务的铁三角关系

更多推荐

DDD(领域驱动设计)从入门到精通

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,922评论 6 497
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,591评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,546评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,467评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,553评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,580评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,588评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,334评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,780评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,092评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,270评论 1 344
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,925评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,573评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,194评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,437评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,154评论 2 366
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,127评论 2 352