DDD—子域和限界上下文
一、域的概念和劃分
DDD對業(yè)務(wù)領(lǐng)域劃分到一定程度后,便將特定問題限定在了特定的邊界內(nèi),這個(gè)特定的邊界就是域,在邊界內(nèi)進(jìn)行領(lǐng)域建模,微服務(wù)代碼落地。
邊界有大有小,領(lǐng)域可以進(jìn)一步劃分為子域,把問題聚焦到一個(gè)特定的業(yè)務(wù)范圍內(nèi)。
在領(lǐng)域不斷細(xì)分的過程中,通常被分解為核心子域,通用子域和支撐子域
企業(yè)內(nèi)決定核心競爭力的是核心子域里的業(yè)務(wù),而沒有個(gè)性化訴求,不在業(yè)務(wù)主流程上的為通用子域,另外一種不是企業(yè)核心競爭力能力的,但對于核心子域的建設(shè)是不可缺少的稱為支撐子域,支撐子域和通用子域都可以被多個(gè)核心子域重復(fù)使用。
比如電商領(lǐng)域中,營銷,推薦,購物,直播是他的核心子域,而這些核心業(yè)務(wù)邏輯都需要訂單,支付,用戶信息,所以這部分為通用子域,而支撐子域更多為公共服務(wù)的實(shí)現(xiàn),如任何子域都需要使用到的數(shù)據(jù)字典,國際化,權(quán)限認(rèn)證等。
二、核心子域的選擇
比如人作為一個(gè)領(lǐng)域的話,身高,體重,背景,外貌,性格,品行是子域,那么對于不同的人來說,核心子域是可以不同的,外貌協(xié)會會把外貌作為核心子域,拜金的會把背景作為核心子域。
在同一個(gè)領(lǐng)域,不同核心領(lǐng)域的選擇,決定了一個(gè)企業(yè)的戰(zhàn)略方向和商業(yè)模式,例如電商領(lǐng)域里,淘寶是C2C,京東是B2C,戰(zhàn)略方向和商業(yè)模式最終會導(dǎo)致核心領(lǐng)域選擇的不同,導(dǎo)致企業(yè)的核心投入占比不同。
所以核心子域的建模,要排在領(lǐng)域建模的首要位置,他會決定企業(yè)的投資方向和戰(zhàn)略地位。
三、限界上下文(Bounded Context)
限界上下文定義了領(lǐng)域模型的邊界和業(yè)務(wù)適用范圍,使得團(tuán)隊(duì)所有成員明確什么內(nèi)容應(yīng)該在領(lǐng)域模型中實(shí)現(xiàn),什么東西不應(yīng)該出現(xiàn)
定義限界上下文通??紤]領(lǐng)域業(yè)務(wù)職責(zé)單一的因素,確定了職責(zé)邊界后,將所有實(shí)現(xiàn)該領(lǐng)域職能相關(guān)的對象都放在同一個(gè)限界上下文邊界內(nèi),而將所有與該職能無關(guān)的對象排除在上下文邊界之外,限界上下文就是一個(gè)強(qiáng)制邊界,保證領(lǐng)域職責(zé)的單一性。
部門的組織架構(gòu)劃分,實(shí)際就是定義部門的限界上下文,企業(yè)設(shè)置組織架構(gòu)時(shí),通常從部門職責(zé)出發(fā),設(shè)立人力資源部,行政部,技術(shù)部,銷售部,咨詢部,部門的只能邊界就是企業(yè)這個(gè)領(lǐng)域的上下文邊界。在部門內(nèi)聚集和部門相關(guān)技能的成員,職責(zé)。部門邊界的區(qū)分是為了避免不相干的成員散落在各個(gè)部門,給人造成一種組織架構(gòu)混亂的感覺,覺得這個(gè)企業(yè)的組織架構(gòu)不夠單一,界限明確,不能夠?qū)I(yè)的人干專業(yè)的事。
限界上下文本質(zhì)上就是子域。當(dāng)一個(gè)領(lǐng)域,我們劃分的子域足夠小的時(shí)候,就可以在子域內(nèi)劃分限界上下文,進(jìn)行領(lǐng)域建模了,如果子域劃分得足夠小不可再拆分,那么限界上下文剛好和子域的邊界一致,如果子域還能再次劃分,一個(gè)子域內(nèi)出現(xiàn)多個(gè)限界上下文,也是OK的
四、共同語言
三百六十行,行行出狀元。在上文的部門職能上下文內(nèi),不同部門內(nèi)的行話也是不一樣的,比如技術(shù)部用技術(shù)相關(guān)的語言交流,人力資源部用人力相關(guān)的語言交流,這些共同語言組成了部門間的語言上下文邊界
比如電商領(lǐng)域的淘寶,商品在進(jìn)貨階段叫貨物,銷售階段叫寶貝,快遞階段叫快遞,一件東西在不同的階段會有不同的表現(xiàn)形式,由于業(yè)務(wù)領(lǐng)域邊界的不同,需要達(dá)成對領(lǐng)域內(nèi)對象,實(shí)體的共同語言描述,避免造成歧義。
參考書籍 ——《基于DDD和微服務(wù)的中臺架構(gòu)與實(shí)現(xiàn)》歐創(chuàng)新、鄧頔
參考書籍 ——《領(lǐng)域驅(qū)動設(shè)計(jì)》Eric Evans
參考書籍 ——《架構(gòu)真經(jīng)》Martin L. Abbott
總結(jié)
以上是生活随笔為你收集整理的DDD—子域和限界上下文的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 给zblog站点备份和搬家
- 下一篇: 2.2 Netbackup磁带库管理