偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

老板要做DDD改造,我現(xiàn)在慌得一比!

原創(chuàng)
開發(fā) 架構(gòu) 開發(fā)工具
隨著微服務(wù)理論的盛行,沉寂了近二十年的 DDD 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的價(jià)值逐漸被越來(lái)越多的公司認(rèn)可。

【51CTO.com原創(chuàng)稿件】隨著微服務(wù)理論的盛行,沉寂了近二十年的 DDD 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的價(jià)值逐漸被越來(lái)越多的公司認(rèn)可。

[[437058]]

圖片來(lái)自 包圖網(wǎng)

但是 DDD 作為純方法論,在實(shí)際應(yīng)用中因缺乏類似框架的強(qiáng)約束性,如何有效指導(dǎo)業(yè)務(wù)落地實(shí)施,尤其是復(fù)雜系統(tǒng)架構(gòu)的優(yōu)化改造,都對(duì)研發(fā)團(tuán)隊(duì)提出很高的要求。

采購(gòu)平臺(tái)則通過(guò)溯源演進(jìn)重放的方法,以“上帝視角”重新審視整個(gè)系統(tǒng)架構(gòu)和業(yè)務(wù)發(fā)展的歷程以及重要節(jié)點(diǎn),以演進(jìn)重放的方式進(jìn)行領(lǐng)域模型設(shè)計(jì)。

一方面使復(fù)雜系統(tǒng)改造有了很好的切入點(diǎn),另一方面使系統(tǒng)設(shè)計(jì)天生具備演進(jìn)屬性,適應(yīng)當(dāng)下業(yè)務(wù)的同時(shí)也能更好的兼容未來(lái)業(yè)務(wù)的發(fā)展。

根據(jù)熵增定律,一切事物如果不加以約束都趨向從有序變?yōu)闊o(wú)序。系統(tǒng)作為一個(gè)獨(dú)立個(gè)體,其熵增趨勢(shì)也是無(wú)法避免的。

業(yè)務(wù)的橫向拓展和縱向深耕,架構(gòu)演進(jìn)和技術(shù)創(chuàng)新都會(huì)導(dǎo)致系統(tǒng)復(fù)雜性越來(lái)越高。

畢竟個(gè)人的認(rèn)知和接受能力是有上限的,當(dāng)系統(tǒng)的復(fù)雜性超出團(tuán)隊(duì)大多數(shù)人的認(rèn)知上限時(shí),系統(tǒng)的任何一點(diǎn)微小的優(yōu)化或改動(dòng),都會(huì)讓研發(fā)團(tuán)隊(duì)疲于奔命,也會(huì)給系統(tǒng)的穩(wěn)定性帶來(lái)很大的風(fēng)險(xiǎn)或隱患!

所以提升開發(fā)效率和系統(tǒng)穩(wěn)定性成為技術(shù)研發(fā)團(tuán)隊(duì)繞不開且必須解決的問(wèn)題。

事件

通過(guò)對(duì)采購(gòu)平臺(tái)系統(tǒng)發(fā)展歷程和重要節(jié)點(diǎn)的不斷審視,發(fā)現(xiàn)導(dǎo)致系統(tǒng)復(fù)雜性的主要原因還是業(yè)務(wù)的復(fù)雜性。

系統(tǒng)架構(gòu)設(shè)計(jì)中如果不能很好的解決業(yè)務(wù)領(lǐng)域的復(fù)雜性,技術(shù)架構(gòu)的優(yōu)化和演進(jìn)再好也于事無(wú)補(bǔ)。

采購(gòu)平臺(tái)自 15 年搭建伊始,業(yè)務(wù)橫向方面從最初單一的電器業(yè)態(tài),逐步拓展紅孩子,百貨再到近幾年的小店,迪亞,家樂(lè)福等大快消業(yè)態(tài)。同時(shí)縱向?qū)﹄娖鳂I(yè)態(tài)的深耕,如樣機(jī),不良品,換異型等也在同步進(jìn)行。

業(yè)態(tài),操作模式,經(jīng)營(yíng)模式,業(yè)務(wù)模式等等相互穿插組合帶來(lái)了業(yè)務(wù)的靈活多變的同時(shí),也帶來(lái)系統(tǒng)復(fù)雜度幾何級(jí)上升。

此時(shí)高效的開發(fā)效率更是無(wú)從談起,很難對(duì)業(yè)務(wù)的發(fā)展提供高效支撐,隨之而來(lái)的業(yè)務(wù)的埋怨和領(lǐng)導(dǎo)的不理解也給開發(fā)團(tuán)隊(duì)帶來(lái)很大的心理負(fù)擔(dān),進(jìn)而影響團(tuán)隊(duì)穩(wěn)定性……環(huán)環(huán)相扣陷入惡性循環(huán)的泥潭。

如何破開困境?倡導(dǎo)保持概念完整性的領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是個(gè)不錯(cuò)的選擇。DDD 關(guān)注于精簡(jiǎn)的業(yè)務(wù)模型和實(shí)現(xiàn)的匹配,其作為方法論指導(dǎo)系統(tǒng)架構(gòu)設(shè)計(jì),是解決業(yè)務(wù)領(lǐng)域復(fù)雜性的利器。

通過(guò)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)模式促使研發(fā)團(tuán)隊(duì)將業(yè)務(wù)模型作為項(xiàng)目溝通的核心,使成員之間更容易理解彼此之間的工作,大大提升團(tuán)隊(duì)溝通效率。

領(lǐng)域模型的高內(nèi)聚低耦合,大大降低不同業(yè)務(wù)模塊之間的影響有效提升系統(tǒng)穩(wěn)定性,同時(shí)領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)倡導(dǎo)概念完整性,注重模型和實(shí)現(xiàn)的匹配使系統(tǒng)更易于理解和擴(kuò)展。

挑戰(zhàn)點(diǎn)(難點(diǎn))

雖然領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)是個(gè)不錯(cuò)的指導(dǎo)方法論,也正因?yàn)槭峭ㄓ玫睦碚?,在具體項(xiàng)目的落實(shí)中,因不存在相同業(yè)務(wù)的系統(tǒng),即使相似業(yè)務(wù)的系統(tǒng)因規(guī)模和產(chǎn)品生命周期差異,也只有一般意義上的參考價(jià)值。

所以都需要面臨如何進(jìn)行領(lǐng)域建模的快速切入,以及預(yù)防模型在實(shí)現(xiàn)層面的腐化等諸多挑戰(zhàn)點(diǎn)。

主要體現(xiàn)在以下幾個(gè)方面:

①邏輯復(fù)雜,無(wú)從下手。系統(tǒng)經(jīng)過(guò)日積月累的迭代優(yōu)化,新的業(yè)務(wù)模塊和功能點(diǎn)與日俱增,且成發(fā)散趨勢(shì)。

再加上即使同業(yè)態(tài)下業(yè)務(wù)的深耕也有很多個(gè)性化需求,功能點(diǎn)相互穿拆耦合的現(xiàn)象非常普遍,千頭萬(wàn)緒很難梳理。需要有個(gè)適合自身業(yè)務(wù),行之有效的方法去指導(dǎo)辨別合適的切入點(diǎn)。

②能力差異,邊界難定。領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)使開發(fā)團(tuán)隊(duì)從面向數(shù)據(jù)庫(kù)編程轉(zhuǎn)為面向領(lǐng)域編程,一切都要求從業(yè)務(wù)角度出發(fā),對(duì)團(tuán)隊(duì)成員業(yè)務(wù)理解能力要求大大提升。

實(shí)際上團(tuán)隊(duì)成員的能力總是有差異的,其導(dǎo)致的理解偏差最終會(huì)逐漸反應(yīng)到實(shí)現(xiàn)層,進(jìn)而影響整個(gè)業(yè)務(wù)領(lǐng)域藍(lán)圖。

特別是在領(lǐng)域邊界的建立,模糊的有交集的領(lǐng)域模型,最終會(huì)腐化整個(gè)架構(gòu)。這就需要有契合業(yè)務(wù)特性,簡(jiǎn)易的界定方式,幫助團(tuán)隊(duì)成員快速清晰的確認(rèn)領(lǐng)域邊界。

③業(yè)務(wù)細(xì)化,粒度難分。明確了領(lǐng)域范圍也就是限界上下文,業(yè)務(wù)域做了合理的劃分也不代表領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)就會(huì)水到渠成。

隨之業(yè)務(wù)發(fā)展,原業(yè)務(wù)域或者子域可能又出現(xiàn)垂直細(xì)分的需求,細(xì)分的業(yè)務(wù)概念是否需要反應(yīng)到業(yè)務(wù)領(lǐng)域藍(lán)圖也是一個(gè)需要重點(diǎn)考慮的問(wèn)題。

業(yè)務(wù)概念的完整性和模型精簡(jiǎn)之間權(quán)衡的度的把握,同樣需要有個(gè)簡(jiǎn)單易行的標(biāo)準(zhǔn)。

分析與解決過(guò)程

針對(duì)上述問(wèn)題,主要分析和解決方案對(duì)應(yīng)如下:

①以始為本,回放演進(jìn)

任何復(fù)雜的事物都是從簡(jiǎn)單演化出來(lái)的,復(fù)雜的系統(tǒng)亦然??v覽采購(gòu)平臺(tái)的演進(jìn)歷程,系統(tǒng)搭建初期,無(wú)論是業(yè)務(wù)模式還是系統(tǒng)規(guī)模都是最簡(jiǎn)單和最小的。

所以通過(guò)復(fù)盤溯源的方式以系統(tǒng)搭建初期業(yè)務(wù)和系統(tǒng)規(guī)模為基線,進(jìn)行初始化領(lǐng)域模型搭建更具可行性。

一方面業(yè)務(wù)規(guī)模小,更容易梳理出業(yè)務(wù)主線。加上初期各業(yè)務(wù)域之間很少或不存在交叉情況,建立領(lǐng)域模型相對(duì)簡(jiǎn)單也方便入手。

另一方面初始領(lǐng)域模型建立后,再以業(yè)務(wù)和系統(tǒng)的實(shí)際的演變過(guò)程對(duì)初始領(lǐng)域模型進(jìn)行豐富和優(yōu)化,最終形成一個(gè)邊界清晰的完整的業(yè)務(wù)領(lǐng)域藍(lán)圖。

這一切都是在復(fù)盤過(guò)往業(yè)務(wù)發(fā)展和系統(tǒng)演進(jìn)的基礎(chǔ)上進(jìn)行的,貼合了業(yè)務(wù)和系統(tǒng)的發(fā)展曲線。

從概率的角度上看,用該方法完善的領(lǐng)域模型比單純依靠經(jīng)驗(yàn)而建的模型更能好的契合當(dāng)前業(yè)務(wù)發(fā)展和兼容未來(lái)業(yè)務(wù)的變化。同時(shí)以上也都符合一個(gè)好的架構(gòu)的“簡(jiǎn)單,合適,演進(jìn)”特征。

②作用范圍,領(lǐng)域定界

提及領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)離不開“核心域”“聚合根”“實(shí)體”“值對(duì)象”“限界上下文”等,DDD 的各類文檔資料對(duì)上述名詞都有很明確的定義和解釋。

但是實(shí)際項(xiàng)目的落實(shí)中,仍然需要一個(gè)簡(jiǎn)易可行的界定方法,為領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)在團(tuán)隊(duì)內(nèi)部實(shí)施和演進(jìn)掃清障礙。

“易則易知,簡(jiǎn)則易行”簡(jiǎn)易可行的方法才能更容易被團(tuán)隊(duì)成員理解和接受。

結(jié)合采購(gòu)平臺(tái)本身的業(yè)務(wù)特性,將采購(gòu)執(zhí)行鏈路上產(chǎn)生的各種類型單據(jù)以及交互進(jìn)行梳理,如訂單,預(yù)約單,作業(yè)指令,收發(fā)貨等實(shí)體化后作為一個(gè)對(duì)象,以此對(duì)象作為聚合根,凡是以該對(duì)象為主體的作用范圍都?xì)w于一個(gè)領(lǐng)域。

一旦該對(duì)象在某個(gè)環(huán)節(jié)的業(yè)務(wù)邏輯中失去“主角”光環(huán),則需要根據(jù)實(shí)際業(yè)務(wù)確定新的“主角”進(jìn)而決定是新建領(lǐng)域還是轉(zhuǎn)到已存的別的領(lǐng)域。

③維度固化,細(xì)化剝離

維護(hù)業(yè)務(wù)概念的完整性是衡量設(shè)計(jì)好壞的一個(gè)重要的參考指標(biāo)。好的設(shè)計(jì)從代碼層面清晰展現(xiàn)業(yè)務(wù)領(lǐng)域藍(lán)圖且易于理解,同時(shí)又能很好的隔離不同領(lǐng)域相互之間的影響。

實(shí)際項(xiàng)目中往往存在很多因業(yè)務(wù)需要在某一場(chǎng)景下進(jìn)行細(xì)分的情況,按照維護(hù)業(yè)務(wù)概念完整性的要求就需要將細(xì)分場(chǎng)景進(jìn)一步獨(dú)立進(jìn)行隔離解耦。

但過(guò)多的細(xì)分場(chǎng)景增加了開發(fā)工作量也模糊了業(yè)務(wù)領(lǐng)域藍(lán)圖,同時(shí)加深了對(duì)業(yè)務(wù)整體的溝通和理解難度。

如采購(gòu)平臺(tái)實(shí)際的收發(fā)貨業(yè)務(wù)場(chǎng)景,最初根據(jù)業(yè)務(wù)分類按照采購(gòu)入庫(kù),退廠出庫(kù),調(diào)撥出庫(kù),調(diào)撥入庫(kù)等進(jìn)行分類場(chǎng)景處理。

后期隨著業(yè)務(wù)的拓展,采購(gòu)入庫(kù)場(chǎng)景下進(jìn)一步按類型維度細(xì)分出換異型入庫(kù),不良品返廠維修入庫(kù)等完全個(gè)性化的處理邏輯。

根據(jù)鏈路上下游系統(tǒng)交互情況,以及團(tuán)隊(duì)內(nèi)部對(duì)該業(yè)務(wù)域的認(rèn)知,權(quán)衡后確定的原則是,以收發(fā)貨業(yè)務(wù)分類進(jìn)行領(lǐng)域藍(lán)圖的展現(xiàn),以此作為該業(yè)務(wù)域下維護(hù)概念完整性的唯一且不變的維度。

特定業(yè)務(wù)分類下進(jìn)一步按類型細(xì)化場(chǎng)景,作為一個(gè)子域,業(yè)務(wù)也獨(dú)立并以策略模式歸集于上一層的業(yè)務(wù)分類領(lǐng)域。

方法論(正向)

領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)作為指導(dǎo)架構(gòu)設(shè)計(jì)的一種有效思想,對(duì)復(fù)雜邏輯的業(yè)務(wù)系統(tǒng)的重構(gòu)和建設(shè)提供了很好的解決方案。

但再好的設(shè)計(jì)也必須通過(guò)實(shí)現(xiàn)層展現(xiàn),實(shí)現(xiàn)層質(zhì)量又嚴(yán)重依賴開發(fā)團(tuán)隊(duì)的個(gè)人能力。

“簡(jiǎn)易可行,契合業(yè)務(wù)”的方法和原則還是很有必要的,這是設(shè)計(jì)推行和架構(gòu)防腐的很有效的手段。

但同時(shí)也要看到領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)并不是解決系統(tǒng)復(fù)雜性的銀彈。對(duì)癥則是良藥,為了 DDD 而 DDD 則可能最終變成毒藥。

作者:胥磊

簡(jiǎn)介:蘇寧易購(gòu)供應(yīng)鏈 BU 采購(gòu)管理研發(fā)中心采購(gòu)中臺(tái)技術(shù)負(fù)責(zé)人,對(duì)復(fù)雜業(yè)務(wù)系統(tǒng)架構(gòu)的優(yōu)化和拓展有一定的經(jīng)驗(yàn)。前后負(fù)責(zé)過(guò)蘇寧采購(gòu)平臺(tái)的搭建,向采購(gòu)中臺(tái)演進(jìn)以及 DDD 改造的技術(shù)架構(gòu)設(shè)計(jì)。

編輯:陶家龍 

征稿:有投稿、尋求報(bào)道意向技術(shù)人請(qǐng)聯(lián)絡(luò) editor@51cto.com

【51CTO原創(chuàng)稿件,合作站點(diǎn)轉(zhuǎn)載請(qǐng)注明原文作者和出處為51CTO.com】

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2020-03-19 08:55:56

中臺(tái)數(shù)字化企業(yè)

2018-07-02 11:24:23

360

2018-08-20 09:11:14

企業(yè)專業(yè)能力

2018-12-12 16:05:32

2019-03-19 09:06:02

物聯(lián)網(wǎng)IoT操作系統(tǒng)

2011-11-05 18:22:34

云計(jì)算GoogleApple

2018-09-03 13:07:56

架構(gòu)技術(shù)棧微信半月刊

2013-08-20 10:18:26

桌面虛擬化

2020-05-26 07:57:12

代碼字符串程序員

2010-03-30 11:27:03

臺(tái)式機(jī)無(wú)線網(wǎng)卡

2022-12-01 17:17:09

React開發(fā)

2020-01-20 09:49:58

華為騰訊百度

2025-04-08 11:30:00

DIM數(shù)據(jù)倉(cāng)庫(kù)架構(gòu)

2013-10-09 09:39:17

開源

2013-08-09 10:44:55

創(chuàng)始人創(chuàng)業(yè)獨(dú)立創(chuàng)業(yè)

2009-03-03 20:44:06

桌面虛擬化Xendesktop虛擬化

2022-08-11 09:10:53

系統(tǒng)業(yè)務(wù)

2020-03-03 07:59:29

設(shè)計(jì)秒殺系統(tǒng)

2018-12-20 09:52:05

JVM內(nèi)存分配

2021-08-09 08:24:08

時(shí)間工作生活
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)