每一位程序員都有一顆成為架構(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)各個(gè)方面的設(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)各個(gè)方面的設(shè)計(jì)医增。
--來自維基百科
系統(tǒng)是由一群關(guān)聯(lián)個(gè)體的組成的,系統(tǒng)中的個(gè)體需要“根據(jù)某種規(guī)則”協(xié)作老虫,架構(gòu)需要明確這種協(xié)作規(guī)則叶骨。
架構(gòu)=骨架、結(jié)構(gòu)祈匙,來源于建筑學(xué)邓萨。前者揭示架構(gòu)中內(nèi)在的支撐物,后者則表明架構(gòu)關(guān)心支撐物相互結(jié)合的某種構(gòu)造方式菊卷。
為什么會(huì)出現(xiàn)架構(gòu)設(shè)計(jì)缔恳?
主要可歸納為以下幾個(gè)原因:
? ? 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ā)動(dòng)全身,后續(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ì)必將成為我們重要的解決難題厌殉,屆時(shí)可能需要重新優(yōu)化設(shè)計(jì)。我們期望一張很大的架構(gòu)圖侈咕,囊括所有的業(yè)務(wù)相關(guān)的設(shè)計(jì)公罕,事實(shí)上如果不深入了解業(yè)務(wù),架構(gòu)圖就是紙上談兵乎完。
架構(gòu)的本質(zhì)在于合理熏兄,合理表現(xiàn)為兩個(gè)方面:?
? ? 1)提高效率:用更少的人力承接更多的工作
? ??2)降低預(yù)算:用更少的機(jī)器承接更多的任務(wù)
?- END -
作者:架構(gòu)精進(jìn)之路品洛,專注軟件架構(gòu)研究树姨,技術(shù)學(xué)習(xí)與個(gè)人成長,關(guān)注并私信我回復(fù)“01”桥状,送你一份程序員成長進(jìn)階大禮包帽揪。
Thanks for reading!