架構(gòu)到底是什么?

每一位程序員都有一顆成為架構(gòu)師的心。好多人都在問,架構(gòu)到底是什么?本文來展開探討一下~

1、架構(gòu)與框架的區(qū)別

架構(gòu)有很多說法,例如:

? ??1)開源系統(tǒng)(MySQL、Nginx)架構(gòu)

? ??2)大公司架構(gòu)實(shí)現(xiàn)(支付寶、微信)

那兩者的區(qū)別是什么呢?

架構(gòu):架構(gòu)本身不是軟件,而是關(guān)于軟件如何設(shè)計(jì)的策略。是有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個方面的設(shè)計(jì)。

框架:面向特定領(lǐng)域的、可復(fù)用的“半成品”軟件,它實(shí)現(xiàn)了該領(lǐng)域的共性基礎(chǔ)部分,并提供了一些定義良好的可變點(diǎn)以保證靈活性和可擴(kuò)展性。是領(lǐng)域內(nèi)、特定語言和技術(shù)的架構(gòu)應(yīng)用解決方案。

總結(jié):架構(gòu)關(guān)注的是“結(jié)構(gòu)”,框架關(guān)注的是“規(guī)范”

框架是軟件,目的是抽象通用化高效解決問題;架構(gòu)是軟件的抽象解決方案,目的是便于進(jìn)行大局拆解與局部細(xì)化。

2、架構(gòu)是什么?

軟件架構(gòu)(Software Architecture)

有關(guān)軟件整體結(jié)構(gòu)與組件的抽象描述,用于指導(dǎo)大型軟件系統(tǒng)各個方面的設(shè)計(jì)。

--來自維基百科

系統(tǒng)是由一群關(guān)聯(lián)個體的組成的,系統(tǒng)中的個體需要“根據(jù)某種規(guī)則”協(xié)作,架構(gòu)需要明確這種協(xié)作規(guī)則。

架構(gòu)=骨架、結(jié)構(gòu),來源于建筑學(xué)。前者揭示架構(gòu)中內(nèi)在的支撐物,后者則表明架構(gòu)關(guān)心支撐物相互結(jié)合的某種構(gòu)造方式。

為什么會出現(xiàn)架構(gòu)設(shè)計(jì)?

主要可歸納為以下幾個原因:

? ? 1)業(yè)務(wù)需求多,而且易變

? ? 2)軟件系統(tǒng)越來越復(fù)雜

? ? 3)參與的人越來越多

? ? 4)跨項(xiàng)目共性/特殊性的問題越來越多

? ? 5)技術(shù)發(fā)展日異月新

基于以上多種因素,導(dǎo)致系統(tǒng)維護(hù)成本越來越高:

? ? 1)系統(tǒng)規(guī)模龐大、內(nèi)部耦合嚴(yán)重,開發(fā)效率低;

? ??2)系統(tǒng)耦合嚴(yán)重,牽一發(fā)動全身,后續(xù)修改和擴(kuò)展困難;

? ??3)系統(tǒng)邏輯復(fù)雜,容易出問題,出問題后很難排查和修復(fù)。

3、架構(gòu)的目的是什么?

為了解決軟件系統(tǒng)復(fù)雜度帶來的問題。

其終極目標(biāo)是:用最小的人力成本來滿足構(gòu)建和維護(hù)系統(tǒng)的需求

架構(gòu)設(shè)計(jì)的好處有哪些?

? ? 1)做到心中有數(shù),而不是一頭霧水(“新手”架構(gòu)師)

? ? 2)有的放矢,而不是貪大求全(“老鳥”架構(gòu)師)

一些Case:

? ? “我們的系統(tǒng)一定要能夠支撐到QPS 10w+...”

? ? “微信朋友圈的架構(gòu)就是這么做的,我們也這樣來吧...”

? ? “Docker現(xiàn)在很熱,我們的架構(gòu)應(yīng)該將Docker引入進(jìn)來...”

總結(jié)

隨著業(yè)務(wù)的發(fā)展,跨系統(tǒng)架構(gòu)設(shè)計(jì)必將成為我們重要的解決難題,屆時可能需要重新優(yōu)化設(shè)計(jì)。我們期望一張很大的架構(gòu)圖,囊括所有的業(yè)務(wù)相關(guān)的設(shè)計(jì),事實(shí)上如果不深入了解業(yè)務(wù),架構(gòu)圖就是紙上談兵。

架構(gòu)的本質(zhì)在于合理,合理表現(xiàn)為兩個方面:?

? ? 1)提高效率:用更少的人力承接更多的工作

? ??2)降低預(yù)算:用更少的機(jī)器承接更多的任務(wù)


?- END -

作者:架構(gòu)精進(jìn)之路,專注軟件架構(gòu)研究,技術(shù)學(xué)習(xí)與個人成長,關(guān)注并私信我回復(fù)“01”,送你一份程序員成長進(jìn)階大禮包。

Thanks for reading!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容