業(yè)務(wù)架構(gòu)映射為應(yīng)用架構(gòu)
本文轉(zhuǎn)載自微信公眾號(hào)「逸言」,作者我是張逸。轉(zhuǎn)載本文請(qǐng)聯(lián)系逸言公眾號(hào)。
通過《多維度規(guī)劃業(yè)務(wù)架構(gòu)》,我們獲得了由業(yè)務(wù)領(lǐng)域-業(yè)務(wù)組件-業(yè)務(wù)服務(wù)三個(gè)層次組成的業(yè)務(wù)架構(gòu)。雖然是架構(gòu),但其本質(zhì)仍然屬于問題空間,其目的在于真實(shí)地探索問題空間,了解我們要解決什么樣的問題。我們用到“分解”的方法,并非在解決問題,而是希望通過橫向分層與縱向切分讓問題空間變得更小,降低業(yè)務(wù)復(fù)雜度罷了。
這種分解層次體現(xiàn)為:
- 業(yè)務(wù)領(lǐng)域是對(duì)目標(biāo)系統(tǒng)之系統(tǒng)范圍進(jìn)行劃分,劃分依據(jù)為價(jià)值高低
- 業(yè)務(wù)組件是對(duì)業(yè)務(wù)領(lǐng)域的劃分,劃分依據(jù)在于業(yè)務(wù)相關(guān)性
- 業(yè)務(wù)服務(wù)是對(duì)業(yè)務(wù)組件的劃分,劃分依據(jù)在于領(lǐng)域模型的知識(shí)語境
領(lǐng)域驅(qū)動(dòng)進(jìn)行的業(yè)務(wù)分解,既是對(duì)問題空間的探索,又自然地暗合確定解決方案的思路。由于有清晰的邊界存在,這一做法并未混淆問題空間與解空間,卻天然地搭建了一種映射方法,使得我們能夠以較小成本將業(yè)務(wù)架構(gòu)映射為IT架構(gòu)中的應(yīng)用架構(gòu)。
映射體系如下圖所示:
在圖右側(cè)所示的應(yīng)用架構(gòu)中,我旗幟鮮明地標(biāo)記了前臺(tái)、中臺(tái)與后臺(tái),意味著我對(duì)應(yīng)用架構(gòu)的劃分遵循了中臺(tái)戰(zhàn)略規(guī)劃的思想。
我所理解的“中臺(tái)”,滿足以下定義:
- 中臺(tái)是企業(yè)數(shù)字化轉(zhuǎn)型的能力復(fù)用戰(zhàn)略規(guī)劃體系
- 中臺(tái)是演進(jìn)式的能力復(fù)用戰(zhàn)略動(dòng)態(tài)規(guī)劃過程
顯然,中臺(tái)不是產(chǎn)品,也不是平臺(tái),而是一種規(guī)劃體系。在企業(yè)架構(gòu)的應(yīng)用架構(gòu)中,中臺(tái)僅占據(jù)了中間代表了“能力服務(wù)層”的一部分,體現(xiàn)為由應(yīng)用組件構(gòu)成的能力中心。所謂的“能力復(fù)用戰(zhàn)略動(dòng)態(tài)規(guī)劃過程”,就是在企業(yè)戰(zhàn)略愿景的指導(dǎo)下,以能力復(fù)用為最終目的:
- 對(duì)于產(chǎn)品服務(wù)層,通過識(shí)別變化頻率與復(fù)用粒度,逐步將前臺(tái)的產(chǎn)品特性沉淀為可復(fù)用的業(yè)務(wù)能力中心
- 對(duì)于基礎(chǔ)服務(wù)層,通過識(shí)別企業(yè)IT資產(chǎn),逐步從后臺(tái)的工具與框架中提煉出可復(fù)用的業(yè)務(wù)能力中心
換言之,中臺(tái)不是獨(dú)立的,隨著時(shí)間的推移,應(yīng)形成前臺(tái)、中臺(tái)和后臺(tái)(統(tǒng)稱為“三臺(tái)”)職責(zé)之間聯(lián)動(dòng);中臺(tái)也不是靜態(tài)不變的,同樣隨著時(shí)間的推移,三臺(tái)的邊界發(fā)生動(dòng)態(tài)變化。
之所以要為應(yīng)用架構(gòu)建立中臺(tái),是以復(fù)用為目的,提升研發(fā)的效率和質(zhì)量。能力中心的構(gòu)成,使得整個(gè)企業(yè)的系統(tǒng)架構(gòu)可以打破煙囪系統(tǒng)天然構(gòu)成的壁壘,也有利于它的快速演化,適應(yīng)企業(yè)高速發(fā)展的業(yè)務(wù)需要。
中臺(tái)戰(zhàn)略體系保留了前臺(tái),主要是為了適應(yīng)創(chuàng)新型產(chǎn)品的演變。前臺(tái)的設(shè)計(jì)屬于產(chǎn)品思維的范疇,因?yàn)樗鼱可娴娇焖僭囧e(cuò)的成本,沒有時(shí)間和成本考慮對(duì)復(fù)用能力的沉淀,然而,對(duì)于中臺(tái)已經(jīng)具備的能力中心,不妨取“拿來主義”的態(tài)度,直接復(fù)用。如此既保證了快,又保證了穩(wěn)。
在我認(rèn)為的“三臺(tái)”中,后臺(tái)并非基礎(chǔ)設(shè)施,它同樣屬于業(yè)務(wù)范疇。從Pace-Layer Architecture的角度講,后臺(tái)提供的業(yè)務(wù)其區(qū)別主要在于它的變化頻率更低,甚至可能幾乎不變;從領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的子領(lǐng)域角度講,后臺(tái)提供的業(yè)務(wù)更加通用,以至于考慮購買而非自己構(gòu)建的方式實(shí)現(xiàn)。
如果后臺(tái)穩(wěn)定地提供了業(yè)務(wù)支撐,其收益高于維護(hù)成本,則不必一定要將其提煉為能力中心,甚至于它就是一個(gè)或多個(gè)相對(duì)獨(dú)立而封閉的IT系統(tǒng),對(duì)它的改造存在諸多阻力,改造成本極高,就得允許在企業(yè)IT系統(tǒng)生態(tài)中繼續(xù)存在這樣的遺留煙囪系統(tǒng)。
不管是前臺(tái)的產(chǎn)品,還是中臺(tái)的能力中心,抑或后臺(tái)的工具或框架,其解決方案皆由應(yīng)用組件構(gòu)成,它由業(yè)務(wù)組件映射而得。本質(zhì)上,業(yè)務(wù)組件與應(yīng)用組件都是限界上下文,但前者對(duì)應(yīng)的限界上下文只考慮了業(yè)務(wù)邊界,后者對(duì)應(yīng)的限界上下文在此基礎(chǔ)上繼續(xù)深化,分別考慮團(tuán)隊(duì)角度的工作邊界和技術(shù)角度的應(yīng)用邊界,進(jìn)一步梳理限界上下文的邊界,使其與應(yīng)用架構(gòu)相匹配。為示區(qū)分,我將其命名為“應(yīng)用組件”。
應(yīng)用組件與限界上下文也有不同之處。在領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)中,限界上下文確定的是邏輯邊界,而在應(yīng)用架構(gòu)中,還需要確定它的物理邊界。物理邊界的確定是從質(zhì)量屬性角度考慮的,例如對(duì)可擴(kuò)展性、可伸縮性、低延遲、高并發(fā)的響應(yīng),技術(shù)棧的限制,資源獨(dú)立性的要求,可以確定該應(yīng)用組件究竟應(yīng)定義為服務(wù)(Service),還是庫(library)。
通常,中臺(tái)能力中心的應(yīng)用組件應(yīng)考慮微服務(wù)化,后臺(tái)工具或框架則不然,大多數(shù)時(shí)候,定義為庫可能更合適。對(duì)于前臺(tái),可以考慮一個(gè)產(chǎn)品對(duì)應(yīng)一個(gè)微服務(wù),也可以考慮一個(gè)產(chǎn)品的特性對(duì)應(yīng)一個(gè)微服務(wù)。這取決于前臺(tái)產(chǎn)品的粒度。
業(yè)務(wù)架構(gòu)中純粹表達(dá)業(yè)務(wù)的業(yè)務(wù)服務(wù),在映射到應(yīng)用架構(gòu)時(shí),被定義為應(yīng)用組件需要公開在外的服務(wù)接口,我將其稱之為“服務(wù)契約”,目的是體現(xiàn)服務(wù)調(diào)用者與服務(wù)提供者之間的一種”契約“關(guān)系。
一個(gè)業(yè)務(wù)服務(wù)映射到解空間,會(huì)定義一個(gè)服務(wù)契約;反之,一個(gè)服務(wù)契約卻未必對(duì)應(yīng)問題空間的業(yè)務(wù)服務(wù)——因?yàn)闃I(yè)務(wù)服務(wù)中的一個(gè)執(zhí)行步驟也可能映射為一個(gè)服務(wù)契約。應(yīng)用組件之間存在協(xié)作關(guān)系,根據(jù)業(yè)務(wù)服務(wù)的定義,如果一個(gè)業(yè)務(wù)服務(wù)的某個(gè)執(zhí)行步驟由另外一個(gè)應(yīng)用組件提供,就需要將其定義為另一個(gè)服務(wù)契約,但它并非業(yè)務(wù)服務(wù)。例如,“提交訂單”業(yè)務(wù)服務(wù)對(duì)應(yīng)于訂單應(yīng)用組件,需要對(duì)外公開”提交訂單“的服務(wù)契約;在執(zhí)行提交訂單的流程時(shí),需要驗(yàn)證庫存,該功能由庫存應(yīng)用組件承擔(dān)。由于訂單應(yīng)用組件會(huì)調(diào)用它,因而需要對(duì)外公開”驗(yàn)證庫存“的服務(wù)契約,但”驗(yàn)證庫存“并非一個(gè)業(yè)務(wù)服務(wù),如下圖所示:
業(yè)務(wù)服務(wù)屬于問題空間的范疇,服務(wù)契約屬于解空間的范疇,如此才是合理的。
服務(wù)契約對(duì)應(yīng)于我提出的《菱形對(duì)稱架構(gòu)》中的北向網(wǎng)關(guān)。若應(yīng)用組件為服務(wù),則對(duì)應(yīng)遠(yuǎn)程服務(wù);為庫,則對(duì)應(yīng)本地服務(wù)。它們都不屬于領(lǐng)域?qū)拥膬?nèi)容。業(yè)務(wù)服務(wù)的需求表現(xiàn)為業(yè)務(wù)服務(wù)規(guī)約,它的輸入成為領(lǐng)域分析建模的基礎(chǔ);服務(wù)契約需要構(gòu)成菱形對(duì)稱架構(gòu)的角色構(gòu)造型共同協(xié)作完成,利用服務(wù)驅(qū)動(dòng)設(shè)計(jì)可以驅(qū)動(dòng)出領(lǐng)域設(shè)計(jì)模型,進(jìn)而對(duì)其進(jìn)行建模實(shí)現(xiàn)。
從產(chǎn)品/能力中心/工具/框架到應(yīng)用組件,再從應(yīng)用組件到服務(wù)契約,都有領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的對(duì)應(yīng)模式或方法去實(shí)現(xiàn),由此就能實(shí)現(xiàn)應(yīng)用架構(gòu)的真正落地。若按照中臺(tái)戰(zhàn)略思想規(guī)劃應(yīng)用架構(gòu),意味著中臺(tái)的落地也有了可供參考的實(shí)現(xiàn)過程與方法。
當(dāng)然,通常所謂的”中臺(tái)“,都會(huì)建立雙中臺(tái),即業(yè)務(wù)中臺(tái)和數(shù)據(jù)中臺(tái)。這里參考了領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的方法,針對(duì)的是業(yè)務(wù)中臺(tái)的落地,亦可以理解為是應(yīng)用架構(gòu)的微服務(wù)化。至于數(shù)據(jù)中臺(tái),它關(guān)注的是全域數(shù)據(jù)的生命周期管理、數(shù)據(jù)資產(chǎn)的梳理與建設(shè)、全域數(shù)據(jù)分析與數(shù)據(jù)智能挖掘的數(shù)據(jù)服務(wù),其著眼點(diǎn)顯然和業(yè)務(wù)中臺(tái)有著天壤之別,需要另外的設(shè)計(jì)方法與實(shí)現(xiàn)手段。


























