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