GTLC全球技术领导力峰会·上海站,首批讲师正式上线! 了解详情
写点什么

DDD 和微服务之间是什么关系?

2019 年 5 月 20 日

DDD和微服务之间是什么关系?

随着微服务架构的不断流行,很多企业开始在自己的业务中落地微服务。他们觉得采用微服务架构会让系统的开发与运维管理变得简单高效,并且还能提高系统的可用性。


但是当他们实际执行的时候,才发现就算采用了微服务架构也不能解决他们的问题,反而带来很多开发与运维上的负担。


于是他们就试着去找解决方案,最后很多人发现其实是自己划分微服务的方法错了,他们应该用 DDD(领域驱动设计) 的思想去指导微服务的实践。


那什么是 DDD 呢?DDD 与微服务之间到底有着什么样的联系?DDD 资深专家、Event Storming 之父 Alberto Brandolini 给出了自己的答案。


用一句话来说,DDD 是一种在面向高度复杂的软件系统时,关于如何去建模的方法论,它的关键点是根据系统的复杂程度建立合适的模型。


具体来讲,DDD 方法论在系统建模过程中,可以为团队中的各个角色提供一套“统一语言”,避免组件划分过程中的边界错位,完成领域图预演、需求分析、架构模型、代码模型、测试等工作。“统一语言”的概念在 DDD 中极为重要,因为在一个系统的构建过程中,往往业务人员关注的是业务架构,而技术人员则关注系统架构的表述方式。这就导致在将业务架构映射到系统架构的时候,需要经过一层“翻译”工作,这就会使工作变得复杂、低效。在 DDD 中,只要使用一个“统一语言”,就可以直接将业务架构与系统架构绑定,不需要进一步去翻译,从而增强系统对业务的响应速度。


另外,DDD 的中文翻译“领域驱动设计”中的“领域”一词指的是要实现的软件系统所要解决的实际问题所处的整个领域范围,它不仅包括系统架构的相关问题,还涉及到系统所支持的业务等内容,但它是与具体的开发技术无关的。也就是说 DDD 关注的是要构建的系统中,关于所要解决的问题的业务、流程和数据等内容是如何工作的,在这些东西理清之后,DDD 去构建出一个模型,接着再去选择具体的实现技术。DDD 强调的是解耦具体实现技术,所以它可以迅速梳理核心业务逻辑。


总结起来,DDD 的一个生命周期是这样的:在设计和实现一个系统的时候,这个系统所要处理问题的领域专家和开发人员以一套统一语言进行协作,共同完成该领域模型的构建,在这个过程中,业务架构和系统架构等问题都得到了解决,之后将领域模型中关于系统架构的主体映射为实现代码,完成系统的实现落地。而用什么方式去做领域模型的构建,方法是多样的,Alberto 自己就为此发明了 Event Storming(事件风暴),并成为了一种经典的 DDD 落地模式。


理解了 DDD 的核心理念,你就不难理解它和微服务的关系了。DDD 的本质是一种软件设计方法,而微服务架构是具体的实现方式。微服务架构虽好,但是他并没有给出如何对复杂系统进行分解的具体方法论,而 DDD 正好就是解决方案。


如上就是 Alberto 对于 DDD 的全部解释,希望对你有所帮助。


2019 年 5 月 20 日 17:2413909
用户头像
郭蕾 做有意思的事情!

发布了 210 篇内容, 共 109.7 次阅读, 收获喜欢 30 次。

关注

评论 1 条评论

发布
用户头像
第一眼看没几个字,也没有小标题,没有结构化。
细看了内容确实说出了精要,非常好,内容的信息量很大,很浓缩且不是浮云。
2019 年 10 月 24 日 10:20
回复
没有更多了
发现更多内容

真实!对比(阿里/京东等一线大厂)Java面试真题,自己把自己菜哭了

Java成神之路

Java 程序员 架构 面试 编程语言

常垒资本石矛:寻找ToB投资中的「非共识」

ToB行业头条

SaaS tob

阿里P9力荐Spring Boot学习笔记,一步一步学习Spring Boot,学到的不单单是基础

Java架构师迁哥

python实现AES/DES/RSA/MD5/SM2/SM4/3DES加密算法模板汇总

小小咸鱼ywy

Python 加密 rsa AES

架构师训练营-模块1课程作业

歲月鎏金😈

MemVerge使得大内存应用在 Ice Lake CPU上如虎添翼

Steven Xu

redis 内存 高性能 持久化存储 kvm

浅谈网络性能管理智能化方案和实践

鲸品堂

AI 技术 AIOPS

2021版最新!字节跳动3面+腾讯6面一次过,谈谈我的大厂面经

Java成神之路

Java 程序员 架构 面试 编程语言

【业务架构训练营】模块一作业

汪大侠

1TB每日仅需6元!USnap磁盘快照服务全新上线,精确到秒级恢复

UCloud技术

快照 备份

别再面向 for 循环编程了,Spring 自带的观察者模式就很香!

Java架构师迁哥

爽爆了!凭借阿里这份笔记,仅仅两星期就拿到了8个大厂offer!

Java架构师迁哥

校招失败,在小公司熬了2年后我终于进了阿里,定级P6(Java岗)

神奇小汤圆

Java 编程 程序员 架构 面试

【架构实战营】模块1作业

毛国庆

架构实战营

大数据时代网络信息安全如何保障

Machine Gun

信息安全 渗透测试 WEB安全 网路安全

在小公司“混”了两年,我只认真做了五件事,如今顺利拿到天猫Offer,迈上人生的新台阶!

Java架构追梦

Java 面试经历 面试题总结 天猫Offer 成长路线图

MemVerge 和百奥智汇用大内存技术加速癌症和新冠病毒的研究

Steven Xu

内存 高性能 持久化存储 I/O

Adobe国际认,Photoshop软件“了解图层”官方教程

Adobe国际认证

PhotoShop Adobe国际认

线程池 图解

线程池

模块一:课后作业

冷酷小绵羊

Bee币蜜蜂网链是什么?

飞亚科技

MySQL-技术专题-MVCC机制介绍

李浩宇/Alex

MySQL 事务隔离级别 Isolation ReadView

Redis 学习资料

escray

redis 极客时间 学习笔记 Redis 核心技术与实战 4月日更

都1202年了,阿里五岳版的《Java开发手册》你还没拜读过?

Java架构师迁哥

智慧党建平台搭建,党建系统开发

13823153121

爬虫知识点汇总

小小咸鱼ywy

大数据 爬虫 破解 抓包 逆向

11

三年过后

架构实战营

(干货)Linux学习资源推荐

Machine Gun

Linux Linux Kenel linux运维 linux开发

U比生活平台

飞亚科技

【业务架构训练营】模块一作业

U2R2otkit

什么!?金三银四,2021年阿里最新面试题惨遭泄露?

Java成神之路

Java 程序员 架构 面试 编程语言

DNSPod与开源应用专场

DNSPod与开源应用专场

DDD和微服务之间是什么关系?-InfoQ