本文首发自「慕课网」(www.imooc.com),想理解更多IT干货内容,程序员圈内热闻,欢送关注"慕课网"!
如果你晓得微服务,那么就肯定据说过DDD.....
DDD到底是什么?
大家都晓得,微服务划分的一个重要实践根底就是畛域驱动设计。而DDD全称就是“畛域驱动设计”,它是一种软件开发中用到的建模设计思维,软件的建模和设计相似修建畛域中建筑师的工作。建筑师把修建的架构设计进去,首先是要满足和优化用户的需要,用户要住着舒服,平安;同样,软件的业务架构师也须要设计软件的业务架构,让软件可能十分好地满足业务需要,推动业务倒退,软件的建模和设计就是业务架构中的重要工作内容。
业务越简单的软件,建模和设计就越难,中国在芯片畛域被卡脖子,不仅是因为没有光刻机,另一个重要起因是短少芯片设计的EDA软件,EDA软件就是简单软件的一个典型代表,芯片畛域极其简单,所以EDA软件的建模和设计也同样简单。对简单软件,传统的面向对象思维曾经不够用了,举个例子,某大厂尽管具备极强的技术和治理能力,然而,晚期应用面向对象的建模和设计思维来开发整个电商零碎,最终也是以失败告终。DDD就是为了解决业务简单的软件系统的建模和设计问题诞生的一种新思维(其实不算太新,然而近几年逐步升温)。
DDD被广泛应用于哪里?
但凡波及到简单软件系统的设计,都须要用到DDD。
例如DDD对业务零碎进行建模和设计,能够使简单零碎更具备可维护性和可更改性,各个模块的耦合更低,不会呈现牵一发而动全身的状况。这一点,从上面咱们会提到的某大厂应用面向对象建模和设计办法的失败教训,到当初WXG采纳DDD就可能看到。
为什么DDD这么火?
一方面,随着国内经济的倒退,晚期的倒退红利曾经逐步隐没了,空白畛域根本不复存在,各畛域竞争越来越强烈,业务的复杂性也越来越高,所以对应的软件系统的复杂性也越来越高,以前简略软件也能赚钱的时代曾经一去不返了。只会CURD、设计简略软件的人当然也没有市场了,市场须要的是具备简单软件设计能力的人才,DDD是目前最无效的针对业务简单零碎的建模和设计思维,所以,市场上对把握DDD的人才需求量一直减少。把握DDD的人,能力担当古代软件系统的架构师,有较好的职业倒退空间。
另一方面,随着微服务架构的风行,人们发现DDD可能为微服务架构中的一些问题提供理论指导,比方:如何划分微服务。所以人们更加意识到DDD思维的重要性。
发展趋势:
1) 和大数据、AI联合;
2) 实践和具体建模办法不断完善;
3) 面向DDD的框架和编程语言。
DDD的特点和外围是什么?
DDD的核心思想简略用一句话来说就是:通过合成来管制复杂性。合成又分两种:横向合成和纵向合成。
- 所谓横向合成:是指通过畛域划分来合成问题,通过限界上下文来合成零碎,把一个简单的畛域分解成几个不太简单的子畛域,不同子畛域解决不同的问题,不同的子畛域用不同的限界上下文来实现,这样,单个限界上下文的复杂度就可控了。
- 纵向合成:是指把技术实现从具体的业务逻辑分离出来,防止技术复杂性传染到业务层,当技术计划变更时,也不会影响业务代码。
DDD的分层架构和形成因素有哪些?
传统的分层架构分为上面四层,然而畛域层依赖基础设施层会让畛域层受到基础设施层的具体技术实现影响。所以,倒退进去六边形架构和洋葱架构,这类架构归纳起来,统称为“整洁架构”。
整洁架构的特点,就是把最外围的畛域层,放在两头,不依赖其余层。
大厂应用DDD的多吗?
能够很负责任的通知你,目前大厂应用DDD的十分多,基本上所有的业务开发都在学习和利用DDD,或者是在利用DDD的路上。
从市场JD咱们能够看出:
1) 市场须要懂DDD的人才,因为懂DDD的人才可能设计简单零碎;
2) 懂DDD的人才能负责古代业务零碎的架构师,才会有更好的职业倒退空间;
3) 大厂的外围部门都在应用DDD,应用DDD可能使软件系统的设计更正当,具备更好的可维护性和可改变性,模块和模块之间的耦合更低,业务不会受技术的影响,不会牵一发而动全身。
目前而言,DDD是针对简单业务软件系统进行建模与设计的惟一无效的方法论工具,不夸大地说,在当今阶段,只有学会利用DDD,技术人员才真正具备了成为架构师的资格。能够必定的是,任何软件开发人员,只有想实现更好的职业倒退,都能够学习DDD,从中受害。
欢送关注「慕课网」帐号,咱们会始终保持内容原创,提供IT圈优质内容,分享干货常识,大家一起独特成长吧!
本文原创公布于慕课网 ,转载请注明出处,谢谢合作