2022-10-28
數(shù)字化轉(zhuǎn)型帶來的業(yè)務(wù)變化對傳統(tǒng)的理論和架構(gòu)正在形成巨大的沖擊。
傳統(tǒng)的運營模式注重效率,認為商業(yè)環(huán)境組織有序、變化緩慢且相對可預(yù)測,其業(yè)務(wù)的需求和邊界是清晰的,是可以被準確描述和表達的,所以傳統(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)。而當整個有機體發(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ù)思維將變化視為一種風險,而可組合性思維能夠駕馭加速變化的風險,并且創(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ù)”的核心訴求!
當然,這種可組合的業(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椒ǎ撤N程度上可以理解為這是一種具有顛覆意義的設(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)域模型準確反映了業(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ū)<摇a(chǎn)品經(jīng)理和軟件技術(shù)人員聯(lián)系在一起,溝通無歧義。
當然,領(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)的“三駕馬車”。