復用之艱

最近幾年以清,中臺之風盛行,各行各業(yè)都希望能建設(shè)自己的”大中臺贮竟,小前臺“丽焊,期望能夠通過強大中臺的復用能力快速的賦能業(yè)務,讓新業(yè)務可以快速試錯咕别,降低整體成本技健,但是實踐下來發(fā)現(xiàn)困難重重。剛好最近在參與一個跨域功能點的復用開發(fā)惰拱,借此梳理下軟件架構(gòu)中復用的一種路徑雌贱。

最開始不同業(yè)務為了快速成長,一般都是在各自的系統(tǒng)中開發(fā),例如三個電商業(yè)務A欣孤、B馋没、C會有各自的交易、支付降传、商品等完整的電商系統(tǒng)篷朵。

各自生長

隨著公司的發(fā)展,發(fā)現(xiàn)各個業(yè)務之間有很多公共的特性婆排,如果還是在各自系統(tǒng)中單獨實現(xiàn)声旺,不利于能力的復用與沉淀,另外還有一些其他因素的考慮(例如打造公司生態(tài)系統(tǒng)泽论,打通不同業(yè)務線的數(shù)據(jù)壁壘)艾少,于是慢慢將公共的功能抽取出來形成了底層平臺,例如交易平臺翼悴,支付平臺缚够。

平臺型

平臺型解決了復用了問題,但是卻面臨了擴展(定制)的問題鹦赎,每個業(yè)務之間都存在不同的玩法谍椅,業(yè)務邏輯存在較大的差異,例如業(yè)務A在計算訂單金額時需要增加費用PA1古话,于是A在生成訂單的接口中增加了一個額外費用的參數(shù)PA1雏吭。

金額計算邏輯

隨著業(yè)務的發(fā)展,業(yè)務A中對于金額的計算發(fā)生了變化陪踩,增加的金額變成了2*PA1杖们,但是當業(yè)務方開發(fā)修改時,不敢直接在之前的定制邏輯中修改肩狂,因為不知道參數(shù)PA1到底被多少業(yè)務方使用了(很可能業(yè)務方B也使用了這個參數(shù))摘完,因此這個時候往往再增加一個參數(shù)或者增加一層判斷。


定制增加后的金額計算

底層平臺中的各種定制點越來越多傻谁,邏輯越來越復雜孝治,很難有人能夠通過代碼就知道業(yè)務流程是如何運行的,在新增需求時审磁,只能通過不斷的增加補丁的方式來實現(xiàn)谈飒,原來的代碼沒人敢改動。結(jié)果就是中臺的響應越來越慢态蒂,效能越來越低杭措,低效貫穿了整個研發(fā)過程,包括需求評審與設(shè)計(無法準確評估系統(tǒng)的樣子钾恢,只能先去試試看)瓤介,功能開發(fā)吕喘,測試(隨便一些小改動都需要大量回歸驗證赘那,以免影響到其他業(yè)務)刑桑,發(fā)布以及線上維護。

了解設(shè)計模式的都知道可以通過策略模式來將不同的定制邏輯放到專屬的地方募舟,但是這樣只是代碼結(jié)構(gòu)好看些祠斧,問題的關(guān)鍵是定制邏輯沒有統(tǒng)一的判斷邏輯,無法知道某個業(yè)務方會使用哪種策略拱礁。為了解決這個問題琢锋,于是引入了統(tǒng)一判斷邏輯:業(yè)務身份。為每個業(yè)務方分配一個業(yè)務身份呢灶,并且強制所有定制邏輯都必須根據(jù)身份來區(qū)分差異吴超,并且將差異放到每個業(yè)務的專屬地方,業(yè)務方只能修改專屬代碼鸯乃。

金額計算業(yè)務定制

將所有的業(yè)務方的訂正邏輯都放置到業(yè)務的專屬代碼塊中就形成了下面的結(jié)構(gòu)鲸阻。

具有定制功能的平臺

重構(gòu)之后的平臺難點在于如何制定定制點,如果定制點的粒度太大缨睡,把整個金額計算邏輯全部扔給業(yè)務方定制鸟悴,就失去了平臺的功能,沒有了復用的價值奖年,如果定制點粒度太小细诸,對于業(yè)務方開發(fā)來說理解成本較大,看到的都是一個個離散的點陋守,無法感知整體邏輯震贵。

為了實現(xiàn)功能的復用以及擴展點過多的問題,于是在業(yè)務定制上面增加不同場景下默認實現(xiàn)水评,例如業(yè)務A與業(yè)務C都支持紅包猩系,那么A與C中就需要定制一份與紅包相關(guān)的邏輯,這里紅包的邏輯就可以當成一個默認往上抽取一層之碗,然后基于這個默認實現(xiàn)再制定業(yè)務定制點蝙眶,業(yè)務A與業(yè)務C修改這層默認定制點就好了。

具有定制以及復用沉淀的平臺

系統(tǒng)到這個階段已經(jīng)越來越復雜了褪那,業(yè)務混亂的問題解決了幽纷,被隔離到了業(yè)務自己的代碼塊中了,但是系統(tǒng)本身層次的增加博敬,對于代碼的閱讀與理解帶來了很大的成本友浸,代碼的流程不斷在不同的層級之間切換,模型也不斷的轉(zhuǎn)換偏窝,跟操作系統(tǒng)中的系統(tǒng)調(diào)用一樣收恢,第一次看完第二次基本也不記得了武学,而對于業(yè)務方來說定制點的理解也是只知其一不知其二,萬一不幸現(xiàn)有的定制點不能滿足業(yè)務述求伦意,那更是傷筋動骨火窒。

對于復用與定制本來就是一個平衡與取舍,如果提供的是大而全的功能驮肉,就會給定制帶來困難熏矿,上面的平臺解決方案就是基于這種模型,在對外大接口下不斷尋求定制的方案离钝,同時也要能盡量的提高復用度票编;另外一種方案就是提供原子能力,然后根據(jù)需求去進行組裝卵渴,然后再根據(jù)業(yè)務的共性進行沉淀慧域。

自上而下的業(yè)務定制

復用與擴展雖然很難,但是值得探索浪读,去找到一條可以快速支撐業(yè)務以及減少資源投入的解決方案昔榴。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市瑟啃,隨后出現(xiàn)的幾起案子论泛,更是在濱河造成了極大的恐慌,老刑警劉巖蛹屿,帶你破解...
    沈念sama閱讀 218,525評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件屁奏,死亡現(xiàn)場離奇詭異,居然都是意外死亡错负,警方通過查閱死者的電腦和手機坟瓢,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來犹撒,“玉大人折联,你說我怎么就攤上這事∈都眨” “怎么了诚镰?”我有些...
    開封第一講書人閱讀 164,862評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長祥款。 經(jīng)常有香客問我清笨,道長,這世上最難降的妖魔是什么刃跛? 我笑而不...
    開封第一講書人閱讀 58,728評論 1 294
  • 正文 為了忘掉前任抠艾,我火速辦了婚禮,結(jié)果婚禮上桨昙,老公的妹妹穿的比我還像新娘检号。我一直安慰自己腌歉,他們只是感情好,可當我...
    茶點故事閱讀 67,743評論 6 392
  • 文/花漫 我一把揭開白布齐苛。 她就那樣靜靜地躺著翘盖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪脸狸。 梳的紋絲不亂的頭發(fā)上最仑,一...
    開封第一講書人閱讀 51,590評論 1 305
  • 那天,我揣著相機與錄音炊甲,去河邊找鬼。 笑死欲芹,一個胖子當著我的面吹牛卿啡,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播菱父,決...
    沈念sama閱讀 40,330評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼颈娜,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了浙宜?” 一聲冷哼從身側(cè)響起官辽,我...
    開封第一講書人閱讀 39,244評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎粟瞬,沒想到半個月后同仆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,693評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡裙品,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,885評論 3 336
  • 正文 我和宋清朗相戀三年俗批,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片市怎。...
    茶點故事閱讀 40,001評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡岁忘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出区匠,到底是詐尸還是另有隱情干像,我是刑警寧澤,帶...
    沈念sama閱讀 35,723評論 5 346
  • 正文 年R本政府宣布驰弄,位于F島的核電站麻汰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏揩懒。R本人自食惡果不足惜什乙,卻給世界環(huán)境...
    茶點故事閱讀 41,343評論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望已球。 院中可真熱鬧臣镣,春花似錦辅愿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,919評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至弃舒,卻和暖如春癞埠,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背聋呢。 一陣腳步聲響...
    開封第一講書人閱讀 33,042評論 1 270
  • 我被黑心中介騙來泰國打工苗踪, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人削锰。 一個月前我還...
    沈念sama閱讀 48,191評論 3 370
  • 正文 我出身青樓通铲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親器贩。 傳聞我的和親對象是個殘疾皇子颅夺,可洞房花燭夜當晚...
    茶點故事閱讀 44,955評論 2 355