欢迎光临散文网 会员登陆 & 注册

【干货】一文讲透DDD

2021-12-13 17:21 作者:慕课网官方账号  | 我要投稿

如果你知道微服务,那么就一定听说过DDD.....

 

1、DDD到底是什么?


大家都知道,微服务划分的一个重要理论基础就是领域驱动设计。而DDD全称就是“领域驱动设计”,它是一种软件开发中用到的建模设计思想,软件的建模和设计类似建筑领域中建筑师的工作。建筑师把建筑的架构设计出来,首先是要满足和优化用户的需求,用户要住着舒适,安全;同样,软件的业务架构师也需要设计软件的业务架构,让软件能够非常好地满足业务需求,推动业务发展,软件的建模和设计就是业务架构中的重要工作内容。

业务越复杂的软件,建模和设计就越难,中国在芯片领域被卡脖子,不仅是因为没有光刻机,另一个重要原因是缺少芯片设计的EDA软件,EDA软件就是复杂软件的一个典型代表,芯片领域极其复杂,所以EDA软件的建模和设计也同样复杂。对复杂软件,传统的面向对象思想已经不够用了,举个例子,某大厂虽然具备极强的技术和管理能力,但是,早期使用面向对象的建模和设计思想来开发整个电商系统,最终也是以失败告终。DDD就是为了解决业务复杂的软件系统的建模和设计问题诞生的一种新思想(其实不算太新,但是近几年逐渐升温)。


2、DDD被广泛应用于哪里?


凡是涉及到复杂软件系统的设计,都需要用到DDD。

例如DDD对业务系统进行建模和设计,可以使复杂系统更具备可维护性和可更改性,各个模块的耦合更低,不会出现牵一发而动全身的情况。这一点,从下面我们会提到的某大厂使用面向对象建模和设计方法的失败经验,到现在WXG采用DDD就能够看到。


3、为什么DDD这么火?


一方面,随着国内经济的发展,早期的发展红利已经逐渐消失了,空白领域基本不复存在,各领域竞争越来越激烈,业务的复杂性也越来越高,所以对应的软件系统的复杂性也越来越高,以前简单软件也能赚钱的时代已经一去不返了。只会CURD、设计简单软件的人当然也没有市场了,市场需要的是具备复杂软件设计能力的人才,DDD是目前最有效的针对业务复杂系统的建模和设计思想,所以,市场上对掌握DDD的人才需求量不断增加。掌握DDD的人,才能担当现代软件系统的架构师,有较好的职业发展空间。


 另一方面,随着微服务架构的流行,人们发现DDD能够为微服务架构中的一些问题提供理论指导,比如:如何划分微服务。所以人们更加意识到DDD思想的重要性。


发展趋势:
1) 和大数据、AI结合;

2) 理论和具体建模方法不断完善;

3) 面向DDD的框架和编程语言。 


4、DDD的特点和核心是什么?


DDD的核心思想简单用一句话来说就是:通过分解来控制复杂性。分解又分两种:横向分解和纵向分解。

  • 所谓横向分解:是指通过领域划分来分解问题,通过限界上下文来分解系统,把一个复杂的领域分解成几个不太复杂的子领域,不同子领域解决不同的问题,不同的子领域用不同的限界上下文来实现,这样,单个限界上下文的复杂度就可控了。

  • 纵向分解:是指把技术实现从具体的业务逻辑分离出来,避免技术复杂性传染到业务层,当技术方案变更时,也不会影响业务代码。

5、DDD的分层架构和构成要素有哪些?


传统的分层架构分为下面四层,但是领域层依赖基础设施层会让领域层受到基础设施层的具体技术实现影响。所以,发展出来六边形架构和洋葱架构,这类架构归纳起来,统称为“整洁架构”。



整洁架构



整洁架构的特点,就是把最核心的领域层,放在中间,不依赖其他层。


6、大厂使用DDD的多吗?


可以很负责任的告诉你,目前大厂使用DDD的非常多,基本上所有的业务开发都在学习和应用DDD,或者是在应用DDD的路上。




微信支付商户资金后台开发工程师招聘JD

腾讯资深后台架构师招聘JD

从上面两个腾讯JD我们可以看出:

1) 市场需要懂DDD的人才,因为懂DDD的人才能够设计复杂系统;

2) 懂DDD的人才能担任现代业务系统的架构师,才会有更好的职业发展空间;

3) 大厂的核心部门都在使用DDD,使用DDD能够使软件系统的设计更合理,具备更好的可维护性和可改动性,模块和模块之间的耦合更低,业务不会受技术的影响,不会牵一发而动全身。


目前而言,DDD是针对复杂业务软件系统进行建模与设计的唯一有效的方法论工具,不夸张地说,在当今阶段,只有学会应用DDD,技术人员才真正具备了成为架构师的资格。


7、DDD好学吗?我要怎么学?


可以肯定的是,任何软件开发人员,只要想实现更好的职业发展,都可以学习DDD,从中受益。

DDD好学吗?答案是,不好学。


主要难点有三个:

1)概念太抽象;

2)只闻其声,不见其“用”;

3)知其然而不知其所以然。


高级BAT资深架构师尤达_技术咖啡告诉你:学会DDD,掌握好方式方法也不难。


市面上很多DDD课程不够落地,大家付出大量时间还是学得云里雾里。慕课网邀请BAT资深架构师尤达_技术咖啡老师,以一个DDD研发实战为主线精心打造了这门《DDD(领域驱动设计)思想解读及优秀实践》课程,带你从概念到代码,真正吃透DDD。


扫码了解课程详情

扫我



课程亮点:

上到理论分析,建模设计,下到代码编写,从上到下一杆到底,我们不仅细致入微地介绍DDD的概念和方法知识,还介绍了领域故事陈述法、事件风暴建模法两种建模方法,而且用于真实项目,其中,领域故事陈述法,是之前国内没有人讲过的,是DDD中的最新方法。


除此之外,我们直接深入到代码层面,我们的案例项目,是可以编译运行的,面向具体业务场景的代码。从课程内容上来说,除了领域故事陈述法这种最新的建模方法,我们还有其他一些内容是在实践中会用到的,例如:子域的概念大家都知道,但是如何进行子域的划分,基本没有其他人了解的会特别清楚;对于理想资源库中如何实现自动保存实体数据,本课程里也会直接讲解一种实现方法,而且还提供相关代码。


关于微服务,我们的课程中也会讲到,而且不仅会讲微服务,我们还会基于DDD的理论,将案例项目从单体架构直接实操重构成微服务架构,并且在云上进行部署。



你将收获:


让你用课程里的方法,从问题出发,分析得到方法,方法应用到案例,从案例再挖掘问题,问题、方法、案例构成三角,不仅学会应用,还能学会原理。



基于DDD可以使复杂系统的设计与实现变得可控,使技术人员具备系统架构设计能力,帮助实现从二阶到三阶(从骨干人员到架构师)的跃迁。



吃透DDD,成为架构师,快快扫码进入课程学习吧~

👇👇👇


【干货】一文讲透DDD的评论 (共 条)

分享到微博请遵守国家法律