背景
最近在做 BI-統(tǒng)計圖查詢層重構(gòu)(java應(yīng)用層分析查詢), 自己也在設(shè)計的這個過程中結(jié)合過往的經(jīng)驗在思考:
1柄沮、到底什么是好的架構(gòu)設(shè)計岁歉?
2闹瞧、好的架構(gòu)設(shè)計應(yīng)該具備哪些特征宣谈?
3尔破、設(shè)計完成的方案能否平穩(wěn)落地娱两?
4莺匠、團(tuán)隊協(xié)同開發(fā)的時候是否方便、易用十兢?
5趣竣、后期業(yè)務(wù)增長摇庙、功能迭代的過程中是否又要推翻原有的設(shè)計?
帶著這些問題 在此次重構(gòu)架構(gòu)設(shè)計的過程中反復(fù)思考遥缕,反復(fù)實踐卫袒,自己總結(jié)了一些方法論,下面與大家分享一下单匣,供大家指正與參考夕凝。
適用人群
重點適配高級開發(fā)人員。
但因為是總結(jié)方法封孙,產(chǎn)品迹冤、測試、開發(fā)人員均可參考虎忌。
一泡徙、我心目中好的架構(gòu)設(shè)計
我心目中好的架構(gòu)設(shè)計,應(yīng)該具備以下幾個重點項(權(quán)重由高到低)
1膜蠢、規(guī)范邊界
使用嚴(yán)格的技術(shù)手段
堪藐,依據(jù)業(yè)務(wù)模型
,規(guī)范功能職責(zé)挑围、規(guī)范業(yè)務(wù)邊界礁竞。從邏輯上(業(yè)務(wù)模型)和物理上(文件結(jié)構(gòu))共同進(jìn)行規(guī)范。
--好影響:
因為指責(zé)清晰杉辙,所以后續(xù)豐富功能的過程中模捂,能保證功能內(nèi)聚
,每次功能迭代的過程中可以通過小范圍重構(gòu)使系統(tǒng)更健壯
蜘矢。在經(jīng)歷1-2年的迭代后狂男,系統(tǒng)業(yè)務(wù)邊界依然清晰,功能足夠內(nèi)聚品腹。
2岖食、中臺設(shè)計
架構(gòu)設(shè)計上要適當(dāng)?shù)募夹g(shù)驅(qū)動業(yè)務(wù)
,系統(tǒng)功能應(yīng)通用舞吭。
設(shè)計過程中要先從業(yè)務(wù)入手(此階段是業(yè)務(wù)驅(qū)動技術(shù))泡垃,收集所有功能(通用功能+定制化功能),然后設(shè)計業(yè)務(wù)模型羡鸥,之后進(jìn)行架構(gòu)設(shè)計蔑穴,此階段就是要技術(shù)驅(qū)動業(yè)務(wù)
,我的系統(tǒng)應(yīng)該具備什么能力惧浴,可以支持什么功能澎剥,現(xiàn)在業(yè)務(wù)沒有提到的功能是否也能支持,這些業(yè)務(wù)沒有涵蓋到的功能只是實現(xiàn)預(yù)留,暫時不給前臺提供此功能而已哑姚。
這樣系統(tǒng)的設(shè)計對于后臺來講才是符合邏輯的祭饭,健壯的,有依據(jù)的叙量,而不會因為嚴(yán)重的功能定制化導(dǎo)致系統(tǒng)結(jié)構(gòu)零散倡蝙,沒有規(guī)矩、沒有規(guī)范绞佩,導(dǎo)致系統(tǒng)越來越臃腫寺鸥,最后到達(dá)不能迭代的境地。
--好影響:
系統(tǒng)功能健壯品山、有章法胆建、有規(guī)矩。
3肘交、支持拓展
總體宗旨就是因為易拓展笆载,所以易維護(hù)
。功能要良好支持拓展涯呻,包括橫向拓展凉驻、向上聚合拓展、多組合復(fù)雜場景拓展复罐。(此項結(jié)合具體業(yè)務(wù)去看涝登,例如此次重構(gòu)就是復(fù)雜在多場景、多條件組合相互影響上效诅。)
--好影響:
具體實現(xiàn)可采用策略模式胀滚、多條件組合策略 結(jié)合 模版方法
進(jìn)行設(shè)計,做到核心功能統(tǒng)一乱投、定制化需求相互獨立蛛淋、功能聚焦、功能易理解等篡腌。從而干掉if else-if else這類嚴(yán)重影響系統(tǒng)維護(hù)的代碼實現(xiàn)。
4勾效、迭代簡單
大道至簡嘹悼。
技術(shù)架構(gòu)設(shè)計可以復(fù)雜,可以精巧层宫,可以不易理解杨伙,但是需要把業(yè)務(wù)邏輯實現(xiàn)屏蔽在架構(gòu)設(shè)計之外
。在業(yè)務(wù)邏輯的實現(xiàn)上一定要簡單萌腿、簡潔限匣、易懂
,用最簡單毁菱、最高效的代碼米死,實現(xiàn)邏輯锌历。
主干流程打通后,或者現(xiàn)有業(yè)務(wù)支持成功后峦筒,后續(xù)加人介入開發(fā)究西,即使實習(xí)生或者初級開發(fā)工程師也能快速接入開發(fā)。而且針對不同職級開發(fā)人員物喷,可結(jié)合業(yè)務(wù)及依據(jù)架構(gòu)設(shè)計卤材,分配不同難度工作。
--好影響:
架構(gòu)搭建完成之后峦失,系統(tǒng)維護(hù)不嚴(yán)重依賴核心設(shè)計人員扇丛,做到核心設(shè)計人員和系統(tǒng)解耦
,同時系統(tǒng)迭代效率可橫向拓展尉辑,加人即可增加系統(tǒng)迭代速度帆精。
后記:
此架構(gòu)設(shè)計文為【專題系列】,大致一周更新一次材蹬,后續(xù)將結(jié)合現(xiàn)在進(jìn)行的重構(gòu)工作实幕,圍繞此項目周期,從重點場景設(shè)計堤器、落地實現(xiàn)昆庇、代碼實現(xiàn)細(xì)節(jié)、失敗案例分析闸溃、測試階段及線上暴露問題整吆、災(zāi)備方案、持續(xù)優(yōu)化
等方面進(jìn)行持續(xù)更新辉川,理論結(jié)合實踐進(jìn)行設(shè)計歷程記錄表蝙,供大家參考。