DDD的變與不變
時(shí)間:2022-04-05 19:48:02 | 來源:行業(yè)動(dòng)態(tài)
時(shí)間:2022-04-05 19:48:02 來源:行業(yè)動(dòng)態(tài)
2014年,微服務(wù)概念的火熱帶動(dòng)了DDD的概念被業(yè)界重新認(rèn)知。在隨后的5年中,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在架構(gòu)設(shè)計(jì)過程中的重要作用逐漸被業(yè)界主流所接受。無論是微服務(wù)架構(gòu)、演進(jìn)式架構(gòu)、還是企業(yè)IT架構(gòu)設(shè)計(jì)、企業(yè)中臺(tái)設(shè)計(jì),領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在各個(gè)架構(gòu)設(shè)計(jì)層面都發(fā)揮著自己的價(jià)值,不斷推陳出新。
近年來,經(jīng)過DDD實(shí)踐者們的不斷努力,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)被運(yùn)用于眾多企業(yè)的實(shí)踐之中,雖然規(guī)模還有待進(jìn)一步擴(kuò)大,但成果已相當(dāng)豐厚。無論是在微服務(wù)的應(yīng)用背后,還是在中臺(tái)從規(guī)劃到落地的過程中,再或是在嵌入式C系統(tǒng)重構(gòu)到領(lǐng)域模型,以及大型壽險(xiǎn)核心系統(tǒng)改造項(xiàng)目中,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)架構(gòu)都有不錯(cuò)的表現(xiàn)。2019年領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中國峰會(huì),正是一次對(duì)國內(nèi)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)實(shí)踐的檢閱和展望。比如京東7FRESH系統(tǒng)架構(gòu)負(fù)責(zé)人閻華在會(huì)上分享了京東7FRESH的全渠道零售系統(tǒng)構(gòu)建領(lǐng)域模型的實(shí)際操作。
張逸回顧了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的歷史,他講述了DDD的四大里程碑,那就是2004年DDD的提出、領(lǐng)域事件的引、微服務(wù)的引和中臺(tái)戰(zhàn)略的引。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)(DDD)的概念源于2004年著名建模專家Eric Evans,領(lǐng)域事件的引帶來建模范式和架構(gòu)風(fēng)格的改變。
微服務(wù)的引入是第三個(gè)里程碑,其帶來了設(shè)計(jì)理念的改變,從某種意義上微服務(wù)的產(chǎn)生催生了DDD中國峰會(huì)。張逸表示,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的模式與實(shí)踐降低了從單體架構(gòu)遷移到微服務(wù)架構(gòu)的險(xiǎn),因此微服務(wù)與領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是天作之合,微服務(wù)架構(gòu)采用了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)會(huì)讓微服務(wù)的架構(gòu)遷移更加容易?,F(xiàn)在中臺(tái)的概念非?;?,其實(shí)DDD與中臺(tái)的理念也不謀而合。中臺(tái)是企業(yè)級(jí)能力復(fù)用平臺(tái),而DDD與中臺(tái)融合也就是領(lǐng)域模型的復(fù)用。
基于這樣的思考,張逸給出了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的新定位,也就是DDD不是技術(shù),而是一種哲學(xué)。張逸還引入了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)魔,其X軸限定領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的內(nèi)容,Y軸分離領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的層次,Z蘊(yùn)含了軸領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的實(shí)踐。哲學(xué)意味著DDD變成一個(gè)框架,可以容納很多東西,因此我總結(jié)了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)魔擴(kuò)大了DDD的外延,對(duì)DDD進(jìn)行了一次重新定義,但也要注意領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)不能解決所有的問題,也不能什么內(nèi)容都往DDD里面裝
具體而言,領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)魔方將X軸分為業(yè)務(wù)、技術(shù)與管理三個(gè)維度,在Y軸則將整個(gè)系統(tǒng)的層次分為宏觀層次、微觀層次和納米層次。宏觀層次是針對(duì)整個(gè)軟件系統(tǒng)開展的戰(zhàn)略宏圖規(guī)劃與戰(zhàn)略概要設(shè)計(jì),通常分為兩個(gè)階段:全局分析階段和戰(zhàn)略設(shè)計(jì)階段;微觀層次是承上啟下的關(guān)鍵環(huán)節(jié),是領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在團(tuán)隊(duì)中落地的重要前提;納層次對(duì)應(yīng)于軟件開發(fā)過程的實(shí)現(xiàn)階段。X軸和Y軸的相交分別對(duì)應(yīng)Z軸的方法、模式與實(shí)踐。
領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)魔引入了業(yè)務(wù)架構(gòu)、事件暴、架構(gòu)模式、RAID暴、康威定律、精益需求管理與敏捷過程管理、場(chǎng)景驅(qū)動(dòng)設(shè)計(jì)與測(cè)試驅(qū)動(dòng)開發(fā)、測(cè)試策略。