2022-10-28
數(shù)字化轉(zhuǎn)型帶來的業(yè)務(wù)變化對傳統(tǒng)的理論和架構(gòu)正在形成巨大的沖擊。
傳統(tǒng)的運營模式注重效率,,,認為商業(yè)環(huán)境組織有序、、、變化緩慢且相對可預(yù)測,,,其業(yè)務(wù)的需求和邊界是清晰的,,,是可以被準(zhǔn)確描述和表達的,,,所以傳統(tǒng)系統(tǒng)設(shè)計遵循企業(yè)EA架構(gòu)中業(yè)務(wù)需求-業(yè)務(wù)架構(gòu)-數(shù)據(jù)架構(gòu)-應(yīng)用架構(gòu)-技術(shù)架構(gòu)這一嚴密的邏輯實現(xiàn)路徑,,,這在業(yè)務(wù)相對穩(wěn)定的年代是規(guī)范的構(gòu)建方式,,,也是被廣泛接受的基于數(shù)據(jù)庫為核心的系統(tǒng)建設(shè)范式模式。
然而,,,這其中的挑戰(zhàn)在于沒有辦法實現(xiàn)對“不確定性”的支撐!這種不確定性源于業(yè)務(wù)需求的不明確,,,業(yè)務(wù)邊界被打破而導(dǎo)致的模糊化,,,以及業(yè)務(wù)架構(gòu)的不斷變化。
通過一個更形象的例子來解釋這種不確定性對于傳統(tǒng)EA架構(gòu)理論的挑戰(zhàn):
我們的企業(yè)就好比一個人體組織,,,人體組織運行依賴結(jié)構(gòu)、、、動力和控制三個核心要素,,,其中結(jié)構(gòu)就類同組織—業(yè)務(wù)概念模型,,,動力就是業(yè)務(wù)流程,,,控制對應(yīng)業(yè)務(wù)規(guī)則。
可以想象的是,,,組織是具有生命力且靈活變化的有機體,,,概念模型、、、業(yè)務(wù)流程和業(yè)務(wù)規(guī)則相互關(guān)聯(lián)。流程對概念模型中所代表的關(guān)于事物的知識采取行動,,,而這些行動又受制于業(yè)務(wù)規(guī)則。成功的商業(yè)行為取決于有效的整合,,,這些基本的相互關(guān)系必須考慮在內(nèi)。而當(dāng)整個有機體發(fā)生任何一個局部變化的時候,,,傳統(tǒng)系統(tǒng)設(shè)計中那個最初的也是最為根本的基礎(chǔ)業(yè)務(wù)需求就會出現(xiàn)變化,,,如果按照傳統(tǒng)的設(shè)計理念來應(yīng)對這些變化,,,那幾乎就是每一次的推倒重來,,,這顯然是不可想象且難以接受的。
可組合的業(yè)務(wù)(Business Composability)已經(jīng)被Gartner倡導(dǎo)認為是應(yīng)對業(yè)務(wù)創(chuàng)新中不確定性的最佳策略和方法,,,其核心思想是將具備業(yè)務(wù)共性的元素沉淀形成組件化、、、模塊化,,,以便快速的搭建新的應(yīng)用。Gartner副總裁兼分析師陳勇指出,,,一方面,,,企業(yè)需要有一個方式來應(yīng)對環(huán)境的不確定性;另一方面,,,企業(yè)也需要把其業(yè)務(wù)做到更加敏捷。
同時,,,Gartner認為可組合業(yè)務(wù)由組合式思維、、、可組合的業(yè)務(wù)架構(gòu)和可組合技術(shù)三個部分組成。
可組合的思維,,,是最上面的一層。Gartner副總裁分析師Monika Sinha強調(diào):“傳統(tǒng)業(yè)務(wù)思維將變化視為一種風(fēng)險,,,而可組合性思維能夠駕馭加速變化的風(fēng)險,,,并且創(chuàng)造出新的業(yè)務(wù)價值。”數(shù)字化時代,,,企業(yè)架構(gòu)需要為不確定性和持續(xù)的變化而設(shè)計。可組合的企業(yè)架構(gòu)不是為了效率而優(yōu)化,,,而是為適應(yīng)而優(yōu)化。企業(yè)在設(shè)計業(yè)務(wù)的時候,,,從理念上面來講,,,就要考慮把這個業(yè)務(wù)設(shè)計成為一個可組合的,,,便于未來重新組裝,,,也可稱為“模塊內(nèi)部緊耦合、、、模塊之間松耦合”,,,也就是說,,,模塊和模塊之間耦合的關(guān)系是松散的,,,這樣更便于拆開來;而模塊內(nèi)部耦合是比較緊的、、、形成一塊積木。具備可組合性思維的企業(yè)機構(gòu),,,其領(lǐng)導(dǎo)者往往鼓勵創(chuàng)建并重復(fù)使用模塊化的業(yè)務(wù)能力和技術(shù),,,指導(dǎo)企業(yè)機構(gòu)應(yīng)對不確定性和把握機遇的思維方式。
可組合的業(yè)務(wù)架構(gòu)可確保組織具有靈活性和彈性。組合能力相對較高的企業(yè),,,往往通過多種不同的方式組合能力、、、產(chǎn)品和服務(wù)等業(yè)務(wù)要素,,,從而創(chuàng)造出新的價值。
可組合的技術(shù),,,是采用一些適合變化的敏捷方法論,,,比較典型適配的就是低代碼。可組合技術(shù)可以理解為業(yè)務(wù)需要依靠技術(shù)運行,,,而技術(shù)本身必須具備組合能力才能運行可組合的業(yè)務(wù)。為此,,,企業(yè)機構(gòu)需要將組合能力延伸至整個技術(shù)棧,,,構(gòu)建可快速便捷整合的系統(tǒng)和數(shù)據(jù),,,通過使用API、、、微服務(wù)和其他模塊化組件,,,可將技術(shù)能力生成工作進行模塊化和自動化處理。
于是,,,你會發(fā)現(xiàn),,,低代碼是天然匹配這三個“可組合的思維”、、、“可組合的業(yè)務(wù)架構(gòu)”和“可組合的技術(shù)”的核心訴求!
當(dāng)然,,,這種可組合的業(yè)務(wù)或者說業(yè)務(wù)組件也不是僅靠低代碼就可以實現(xiàn)的,,,低代碼在這其中僅僅扮演了最后封裝的那個角色,,,實現(xiàn)可以全面支撐敏捷高效的另外一個條件就是領(lǐng)域建模。所以這里所說的低代碼顯然不是局限于二維表單的,,,而是面向領(lǐng)域建模的以模型驅(qū)動為核心的低代碼技術(shù)!因為,,,只有領(lǐng)域驅(qū)動設(shè)計的領(lǐng)域建模才有可能滿足復(fù)雜業(yè)務(wù)場景!
“Domain-Driven Design領(lǐng)域驅(qū)動設(shè)計”簡稱DDD,,,是一套綜合軟件系統(tǒng)分析和設(shè)計的面向?qū)ο蠼7椒?,,,某種程度上可以理解為這是一種具有顛覆意義的設(shè)計思想。過去系統(tǒng)分析和系統(tǒng)設(shè)計都是分離的,,,這樣割裂的結(jié)果導(dǎo)致需求分析的結(jié)果無法直接進行設(shè)計編程,,,而能夠進行編程運行的代碼卻扭曲需求,,,導(dǎo)致客戶運行軟件后才發(fā)現(xiàn)很多功能不是自己想要的,,,而且軟件不能快速跟隨需求變化。
DDD則打破了這種隔閡,,,提出了領(lǐng)域模型概念,,,統(tǒng)一了分析和設(shè)計編程,,,使得軟件能夠更靈活快速跟隨需求變化。DDD其實是研究將包含業(yè)務(wù)邏輯的語句統(tǒng)一在對象建模的學(xué)問,,,包括業(yè)務(wù)流程、、、業(yè)務(wù)規(guī)則、、、規(guī)則引擎、、、術(shù)語字典、、、DSL或正則表達式、、、商業(yè)智能和數(shù)據(jù)分析等都屬于業(yè)務(wù)邏輯的范疇領(lǐng)域。DDD革命性在于:領(lǐng)域模型準(zhǔn)確反映了業(yè)務(wù)語言,,,接觸到需求第一步就是考慮領(lǐng)域模型,,,而不是將其切割成數(shù)據(jù)和行為,,,然后數(shù)據(jù)用數(shù)據(jù)庫實現(xiàn),,,行為使用服務(wù)實現(xiàn),,,最后造成需求的首肢分離。DDD讓你首先考慮的是業(yè)務(wù)語言,,,而不是數(shù)據(jù),,,重點不同導(dǎo)致編程世界觀不同,,,甚至可以擺脫數(shù)據(jù)庫設(shè)計中三范式模式的局限性。

DDD是解決復(fù)雜場景中大型軟件的一套行之有效方式,,,在國外已經(jīng)成為主流。DDD認為很多原因造成軟件的復(fù)雜性,,,我們不可能避免這些復(fù)雜性,,,能做的是對復(fù)雜的問題進行控制。而一個好的領(lǐng)域模型是控制復(fù)雜問題的關(guān)鍵。如下圖所示,,,領(lǐng)域模型的價值在于提供一種通用的可視化語言,,,使得領(lǐng)域?qū)<?、、、產(chǎn)品經(jīng)理和軟件技術(shù)人員聯(lián)系在一起,,,溝通無歧義。

當(dāng)然,,,領(lǐng)域模型的核心基礎(chǔ)在于對象建模,,,由對象組裝業(yè)務(wù)域,,,對象內(nèi)的各個邏輯要素緊耦合,,,而對象之間或者域和域之間松耦合。業(yè)務(wù)流程的抽象和業(yè)務(wù)功能的拆分針對領(lǐng)域模型為核心的驅(qū)動設(shè)計以及服務(wù)化(微服務(wù))在平臺功能抽象拆分提供了相對值得借鑒的思路,,,催化了以業(yè)務(wù)功能細分作為域劃分的依據(jù)的組件化方案,,,主要訴求是在細分的業(yè)務(wù)功能組件服務(wù)基礎(chǔ)上,,,能按需快速靈活的組合,,,從而支撐不同的業(yè)務(wù)模式,,,提供業(yè)務(wù)敏捷性,,,支撐業(yè)務(wù)創(chuàng)新求變。
由此可見,,,新一代的應(yīng)用建設(shè)必然趨勢在于通過低代碼對業(yè)務(wù)元素做對象建模并封裝,,,基于業(yè)務(wù)規(guī)則和業(yè)務(wù)邏輯組建業(yè)務(wù)域,,,這在保證敏捷開發(fā)的同時也對靈活多變的業(yè)務(wù)創(chuàng)新帶來了高效的支撐,,,正是所謂的新應(yīng)用架構(gòu)的“三駕馬車”。