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