一、概念

DDD:中文翻译为领域驱动设计(Domain-Driven Design),是一种设计思想,最早是Eric Evans(埃里克·埃文斯)在2003年《Domain-Driven Design –Tackling Complexity in the Heart of Software》一书中提出的概念,提出之后的很多年都不温不火。后来随着微服务架构的兴起,系统的规模和复杂度直线上升,才逐渐变得流行起来。

二、DDD解决什么问题?

近些年,微服务大行其道,微服务有很多优点,我们这里就不再一一赘述。但是微服务项目依然会有很多新的问题,比如说微服务要如何拆分、要如何扩展?怎么样才能构建一个高内聚,低耦合的一个微服务?并且随着、项目的持续时间越来越长,业务越来越复杂,项目的复杂性也随之上升。各个微服务仍然会出现膨胀退化的问题。更严重的问题是业务也是随时变化,我们对业务的理解永远跟不上业务的变化,经过若干次版本以及人员的更迭,任何前期设计的模型,都无法从容应对。如果不幸在某一次迭代中留下一个小小的隐患,在以后就会逐渐的被放大,最终整个项目变得难以维护。

那在项目长期迭代中,我们怎么样保软件质量的稳定呢?DDD的架构模型就非常好的契合了现在的微服务时代,对于我们去构建微服务体系以及去落地现在非常流行的一个中台架构,都提供了非常好的一个理论指导。在复杂系统中使用DDD,将业务描述为领域模型,进而用领域模型来指导软件开发,这样业务的变化就可以快速的映射到领域模型当中,这样就可以以较低的成本维护一个系统,这对于如今生命周期越来越长的系统来说,是非常重要的。

DDD有着一套非常完整的理论体系,大到如何进行微服务的构建。小到如何写银行代码,DDD都提供了非常完整的理论指导,这也是DDD的魅力所在。但是呢也先别着急兴奋,DDD本身只是一套高度抽象的方法论,没有具体的落地方案,它不像微服务,只要把各种各样的技术框架用上,整个软件基本上就成型了。因此如何将DDD的完善落地,还是处在一个仁者见仁智者见智的阶段。目前比较出名的DDD实践是阿里的COLA框架:

最后,DDD也并非“银弹”,不一定适用于所有场景,由于缺乏具体落地方案,DDD在实践过程当中非常容易走偏,一旦走偏,项目就会变得更加混乱,甚至比不用DDD时更混乱。

DDD(领域驱动设计)专题(一):什么是DDD?相关推荐

  1. DDD(领域驱动设计)+SpringCloud的代码示例

    一个微服务+DDD(领域驱动设计)的代码结构示例 </h1><div class="clear"></div><div class=&qu ...

  2. DDD领域驱动设计之聚合、实体、值对象

    关于具体需求,请看前面的博文:DDD领域驱动设计实践篇之如何提取模型,下面是具体的实体.聚合.值对象的代码,不想多说什么是实体.聚合等概念,相信理论的东西大家已经知晓了.本人对DDD表示好奇,没有在真 ...

  3. DDD领域驱动设计 — 贫血模型与充血模型

    文章转载来源:https://juejin.cn/post/6917125801460629518 | 前言  要想深入掌握和了解 DDD 领域驱动设计的核心,那无论如何也绕不开两大较为抽象的概念-- ...

  4. 一文理解 DDD 领域驱动设计!

    来源丨SpringForAll社区 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity in the Heart of Softwa ...

  5. DDD 领域驱动设计:贫血模型、充血模型的深入解读!

    作者:JavaEdge在掘金 链接:https://juejin.cn/post/6917125801460629518 -     前言     - 要想深入掌握和了解 DDD 领域驱动设计的核心, ...

  6. 浅谈我对DDD领域驱动设计的理解

    从遇到问题开始 当人们要做一个软件系统时,一般总是因为遇到了什么问题,然后希望通过一个软件系统来解决. 比如,我是一家企业,然后我觉得我现在线下销售自己的产品还不够,我希望能够在线上也能销售自己的产品 ...

  7. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用

    前言:前篇搭建了下WCF的代码,就提到了DTO的概念,对于为什么要有这么一个DTO的对象,上章可能对于这点不太详尽,在此不厌其烦再来提提它的作用: 从安全上面考虑,领域Model都带有领域业务,让Cl ...

  8. DDD领域驱动设计基本理论知识总结

    领域驱动设计之领域模型 加一个导航,关于如何设计聚合的详细思考,见这篇文章. 2004年Eric Evans 发表Domain-Driven Design –Tackling Complexity i ...

  9. DDD 领域驱动设计:贫血模型、充血模型的深入解读

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 -     前言 ...

  10. [转]浅析DDD(领域驱动设计)

    最近在做一些微服务相关的设计,内容包括服务的划分,Restful API的设计等.其中比较棘手的就是Service的职责划分:如何抽象具有统一业务范畴的Model,使其模块化,又如何高度提炼并组合多模 ...

最新文章

  1. 在家远程办公,如何才能让员工高效工作?
  2. python【数据结构与算法】快速幂and矩阵快速幂取模(看不懂你来打我)
  3. I Love You的真正含义
  4. dedecms 栏目列表页链接如何优化
  5. pve 群晖 virtio速度慢_群晖DS Note高级教程——教你使用智能记事本
  6. 硬盘物理序列号修改工具_精品软件:MHDD磁盘坏道扫描工具使用方法图解教程...
  7. doxygen:代码生成文档的工具
  8. CodeForces - 1252D Find String in a Grid(AC自动机)
  9. RabbitMQ code=200, text=Goodbye比较萌新的问题大佬绕道,乌拉~!
  10. Flexbox 最简单的表单
  11. 阿里程序员受邀去华为面试,却因这点没被录取。
  12. cuda编程python接口_混合编程[python+cpp+cuda]
  13. python 字符编码、格式化
  14. kubunetes packages.cloud.google.com gpg:no valid OpenPGP data found
  15. paip.提升用户体验---c++ qt 悬浮窗实现
  16. 迅雷离线网页版API
  17. 稀土掘金首页沸点课程返场5折直播活动商城APP邀请有礼插件探索稀土掘金搜索创作者中心vip会员5Java查序的头像梳理流程引擎 Flowable 四大常见任务
  18. Windows错误恢复无限重启;开机后灯亮风扇转下停下
  19. 专家,除了呼吁涨价你还会干点什么?
  20. latex参考文献引用【bibtex】

热门文章

  1. 哈佛结构/冯诺依曼结构详细分析
  2. 【數論】【搜索】【SCOI2009】遊戲
  3. 基于MATLAB的电弧仿真模型(Mayr/Cassie 电弧模型)
  4. 算法练习:Sequence II
  5. python多图片合并pdf_Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
  6. 生鲜配送APP软件开发快速制作
  7. check 和nocheck
  8. USDP安装部署及问题
  9. Qt学习笔记之Qt软件的打包发布
  10. Vins-fusion GPS融合部分测试(自己的数据ZED+RTK)