80后聊架構(gòu):究竟什么是架構(gòu)設(shè)計(jì)? | 架構(gòu)師之路
在架構(gòu)師面試過程中,架構(gòu)設(shè)計(jì)是一個(gè)必不可少的環(huán)節(jié)。通常面試官會(huì)陳述系統(tǒng)的功能需求與性能需求,面試者要提出系統(tǒng)架構(gòu)設(shè)計(jì)方案,并與面試官討論方案里的設(shè)計(jì)折衷,方案選型與各個(gè)方案的優(yōu)缺點(diǎn)。
那究竟什么是架構(gòu)設(shè)計(jì),architecture design 呢?
架構(gòu)設(shè)計(jì)通常是指,為了滿足特定的需求,我們定義系統(tǒng)組件,以及組件之間相互作用關(guān)系的過程。
比如說,你要滿足一個(gè)個(gè)人主頁的需求,系統(tǒng)架構(gòu)只需要一個(gè)web-server,背后丟一個(gè)靜態(tài)頁就可以了。而如果你要滿足一個(gè)十萬人同時(shí)登陸的需求,系統(tǒng)架構(gòu)就需要反向代理,web-server,service,DB,cache等諸多組件。
畫外音:任何脫離業(yè)務(wù)需求的架構(gòu)設(shè)計(jì),都是耍流氓。
在軟件工程中,架構(gòu)設(shè)計(jì)是軟件開發(fā)過程中的一個(gè)階段,這個(gè)階段側(cè)重于頂層設(shè)計(jì)而不是細(xì)節(jié)設(shè)計(jì)。通常這個(gè)階段需要設(shè)計(jì)整體的結(jié)構(gòu),組件,與組件關(guān)系。
總之,架構(gòu)設(shè)計(jì)的目的是為了實(shí)現(xiàn)產(chǎn)品需求,業(yè)務(wù)需求,架構(gòu)設(shè)計(jì)非常關(guān)注:
- 整體結(jié)構(gòu);
- 組件;
- 組件之間的關(guān)聯(lián);
舉幾個(gè)案例。
案例1,業(yè)務(wù)需求:“我想做一個(gè)全網(wǎng)搜索引擎,不復(fù)雜,和百度類似就行,兩個(gè)月能上線嗎?”
為了實(shí)現(xiàn)這個(gè)搜索引擎需求,整體的結(jié)構(gòu),組件,組件之間的關(guān)聯(lián),可能就是這樣的。
案例2,業(yè)務(wù)需求:“我想做一個(gè)內(nèi)容檢索功能,不復(fù)雜,100億數(shù)據(jù),每秒10萬查詢而已,兩個(gè)星期能上線嗎?”
為了實(shí)現(xiàn)這個(gè)內(nèi)容檢索需求,整體的結(jié)構(gòu),組件,組件之間的關(guān)聯(lián),可能就是這樣的。
案例3,業(yè)務(wù)需求:“檢索的時(shí)效性,對用戶體驗(yàn)來說很重要,在例子2的基礎(chǔ)之上,必須檢索出5分鐘之前的新聞,1秒鐘之前發(fā)布的帖子,不復(fù)雜吧?”
為了實(shí)現(xiàn)這個(gè)時(shí)效性需求,整體的結(jié)構(gòu),組件,組件之間的關(guān)聯(lián),可能就是這樣的。
以上,就是架構(gòu)設(shè)計(jì)。