背景
最近在做 BI-統(tǒng)計(jì)圖查詢層重構(gòu)(java應(yīng)用層分析查詢), 自己也在設(shè)計(jì)的這個(gè)過(guò)程中結(jié)合過(guò)往的經(jīng)驗(yàn)在思考:
1、到底什么是好的架構(gòu)設(shè)計(jì)?
2、好的架構(gòu)設(shè)計(jì)應(yīng)該具備哪些特征?
3、設(shè)計(jì)完成的方案能否平穩(wěn)落地?
4、團(tuán)隊(duì)協(xié)同開(kāi)發(fā)的時(shí)候是否方便、易用?
5、后期業(yè)務(wù)增長(zhǎng)、功能迭代的過(guò)程中是否又要推翻原有的設(shè)計(jì)?
帶著這些問(wèn)題 在此次重構(gòu)架構(gòu)設(shè)計(jì)的過(guò)程中反復(fù)思考,反復(fù)實(shí)踐,自己總結(jié)了一些方法論,下面與大家分享一下,供大家指正與參考。
適用人群
重點(diǎn)適配高級(jí)開(kāi)發(fā)人員。
但因?yàn)槭强偨Y(jié)方法,產(chǎn)品、測(cè)試、開(kāi)發(fā)人員均可參考。
一、我心目中好的架構(gòu)設(shè)計(jì)
我心目中好的架構(gòu)設(shè)計(jì),應(yīng)該具備以下幾個(gè)重點(diǎn)項(xiàng)(權(quán)重由高到低)
1、規(guī)范邊界
使用嚴(yán)格的技術(shù)手段,依據(jù)業(yè)務(wù)模型,規(guī)范功能職責(zé)、規(guī)范業(yè)務(wù)邊界。從邏輯上(業(yè)務(wù)模型)和物理上(文件結(jié)構(gòu))共同進(jìn)行規(guī)范。
--好影響:
因?yàn)橹肛?zé)清晰,所以后續(xù)豐富功能的過(guò)程中,能保證功能內(nèi)聚,每次功能迭代的過(guò)程中可以通過(guò)小范圍重構(gòu)使系統(tǒng)更健壯。在經(jīng)歷1-2年的迭代后,系統(tǒng)業(yè)務(wù)邊界依然清晰,功能足夠內(nèi)聚。
2、中臺(tái)設(shè)計(jì)
架構(gòu)設(shè)計(jì)上要適當(dāng)?shù)募夹g(shù)驅(qū)動(dòng)業(yè)務(wù),系統(tǒng)功能應(yīng)通用。
設(shè)計(jì)過(guò)程中要先從業(yè)務(wù)入手(此階段是業(yè)務(wù)驅(qū)動(dòng)技術(shù)),收集所有功能(通用功能+定制化功能),然后設(shè)計(jì)業(yè)務(wù)模型,之后進(jìn)行架構(gòu)設(shè)計(jì),此階段就是要技術(shù)驅(qū)動(dòng)業(yè)務(wù),我的系統(tǒng)應(yīng)該具備什么能力,可以支持什么功能,現(xiàn)在業(yè)務(wù)沒(méi)有提到的功能是否也能支持,這些業(yè)務(wù)沒(méi)有涵蓋到的功能只是實(shí)現(xiàn)預(yù)留,暫時(shí)不給前臺(tái)提供此功能而已。這樣系統(tǒng)的設(shè)計(jì)對(duì)于后臺(tái)來(lái)講才是符合邏輯的,健壯的,有依據(jù)的,而不會(huì)因?yàn)閲?yán)重的功能定制化導(dǎo)致系統(tǒng)結(jié)構(gòu)零散,沒(méi)有規(guī)矩、沒(méi)有規(guī)范,導(dǎo)致系統(tǒng)越來(lái)越臃腫,最后到達(dá)不能迭代的境地。
--好影響:
系統(tǒng)功能健壯、有章法、有規(guī)矩。
3、支持拓展
總體宗旨就是因?yàn)橐淄卣?,所以易維護(hù)。功能要良好支持拓展,包括橫向拓展、向上聚合拓展、多組合復(fù)雜場(chǎng)景拓展。(此項(xiàng)結(jié)合具體業(yè)務(wù)去看,例如此次重構(gòu)就是復(fù)雜在多場(chǎng)景、多條件組合相互影響上。)
--好影響:
具體實(shí)現(xiàn)可采用策略模式、多條件組合策略 結(jié)合 模版方法進(jìn)行設(shè)計(jì),做到核心功能統(tǒng)一、定制化需求相互獨(dú)立、功能聚焦、功能易理解等。從而干掉if else-if else這類(lèi)嚴(yán)重影響系統(tǒng)維護(hù)的代碼實(shí)現(xiàn)。
4、迭代簡(jiǎn)單
大道至簡(jiǎn)。技術(shù)架構(gòu)設(shè)計(jì)可以復(fù)雜,可以精巧,可以不易理解,但是需要把業(yè)務(wù)邏輯實(shí)現(xiàn)屏蔽在架構(gòu)設(shè)計(jì)之外。在業(yè)務(wù)邏輯的實(shí)現(xiàn)上一定要簡(jiǎn)單、簡(jiǎn)潔、易懂,用最簡(jiǎn)單、最高效的代碼,實(shí)現(xiàn)邏輯。
主干流程打通后,或者現(xiàn)有業(yè)務(wù)支持成功后,后續(xù)加人介入開(kāi)發(fā),即使實(shí)習(xí)生或者初級(jí)開(kāi)發(fā)工程師也能快速接入開(kāi)發(fā)。而且針對(duì)不同職級(jí)開(kāi)發(fā)人員,可結(jié)合業(yè)務(wù)及依據(jù)架構(gòu)設(shè)計(jì),分配不同難度工作。
--好影響:
架構(gòu)搭建完成之后,系統(tǒng)維護(hù)不嚴(yán)重依賴(lài)核心設(shè)計(jì)人員,做到核心設(shè)計(jì)人員和系統(tǒng)解耦,同時(shí)系統(tǒng)迭代效率可橫向拓展,加人即可增加系統(tǒng)迭代速度。
后記:
此架構(gòu)設(shè)計(jì)文為【專(zhuān)題系列】,大致一周更新一次,后續(xù)將結(jié)合現(xiàn)在進(jìn)行的重構(gòu)工作,圍繞此項(xiàng)目周期,從重點(diǎn)場(chǎng)景設(shè)計(jì)、落地實(shí)現(xiàn)、代碼實(shí)現(xiàn)細(xì)節(jié)、失敗案例分析、測(cè)試階段及線上暴露問(wèn)題、災(zāi)備方案、持續(xù)優(yōu)化等方面進(jìn)行持續(xù)更新,理論結(jié)合實(shí)踐進(jìn)行設(shè)計(jì)歷程記錄,供大家參考。