筆記
架構(gòu)設(shè)計(jì)的主要目的是為了解決軟件系統(tǒng)復(fù)雜度帶來的問題源请。
-
如何入手做架構(gòu)設(shè)計(jì)富稻。幾個(gè)參考點(diǎn):
- “這么多需求筒狠,從哪里開始下手進(jìn)行架構(gòu)設(shè)計(jì)呢舔庶?”
通過熟悉和理解需求抛蚁,識別系統(tǒng)復(fù)雜性所在的地方,然后針對這些復(fù)雜點(diǎn)進(jìn)行架構(gòu)設(shè)計(jì)惕橙。 - “架構(gòu)設(shè)計(jì)要考慮高性能篮绿、高可用、高擴(kuò)展……這么多高 XX吕漂,全部設(shè)計(jì)完成估計(jì)要 1 個(gè)月亲配,但老大只給了 1 周時(shí)間”
架構(gòu)設(shè)計(jì)并不是要面面俱到,不需要每個(gè)架構(gòu)都具備高性能惶凝、高可用吼虎、高擴(kuò)展等特點(diǎn)苍鲜,而是要識別出復(fù)雜點(diǎn)然后有針對性地解決問題洒疚。 - “業(yè)界 A 公司的架構(gòu)是 X,B 公司的方案是 Y坯屿,兩個(gè)差別比較大,該參考哪一個(gè)呢乏德?”
理解每個(gè)架構(gòu)方案背后所需要解決的復(fù)雜點(diǎn)喊括,然后才能對比自己的業(yè)務(wù)復(fù)雜點(diǎn)郑什,參考復(fù)雜點(diǎn)相似的方案蘑拯。
- “這么多需求筒狠,從哪里開始下手進(jìn)行架構(gòu)設(shè)計(jì)呢舔庶?”
為了證明自己的技術(shù)牛强胰,可能會陷入貪大求全的焦油坑而無法自拔偶洋。
-
分析系統(tǒng)復(fù)雜度的幾個(gè)角度:
- 性能玄窝。訪問量或請求量大不大恩脂。(用戶群大不大俩块,訪問頻率高不高玉凯。)
- 高可用性漫仆。系統(tǒng)宕機(jī)時(shí)間長短影響如何盲厌,數(shù)據(jù)丟失影響如何吗浩。
- 可擴(kuò)展性拓萌。功能是否穩(wěn)定微王,新需求是否比較多钧大。
- 安全性啊央。安全級別有多高瓜饥,控制手段有哪些乓土。
- 成本∈晨模客戶的成本投入有多少彬伦,能否承受得住設(shè)計(jì)的開銷。
理解與思考
- 任何系統(tǒng)都有架構(gòu)询张。
即便再簡單或粗糙的系統(tǒng)都有架構(gòu)份氧,軟件系統(tǒng)天然具備架構(gòu)屬性。重點(diǎn)是“設(shè)計(jì)”厅缺【骰恚“設(shè)計(jì)”是用來增強(qiáng)效用、減少成本和降低復(fù)雜度的手段烹骨。 - 怎么做架構(gòu),從哪里入手材泄,要考慮哪些方面沮焕。
先分析和理解需求拉宗,從性能、高可用行簿废、可擴(kuò)展性歪赢、安全和成本幾個(gè)方面找出系統(tǒng)的復(fù)雜性所在,然后針對復(fù)雜性做一些設(shè)計(jì),優(yōu)化效用,降低復(fù)雜性。 - 思考題 請按照“架構(gòu)設(shè)計(jì)的主要目的是為了解決軟件復(fù)雜度帶來的問題”這個(gè)指導(dǎo)思想來分析一下你目前的業(yè)務(wù)系統(tǒng)架構(gòu),看看是否和你當(dāng)時(shí)分析的結(jié)果一樣彻坛?
我目前參與的項(xiàng)目顷啼,是數(shù)據(jù)分析和評估類的踏枣。系統(tǒng)對性能要求高,因?yàn)閿?shù)據(jù)量很大仪搔。另外可擴(kuò)展性要求也挺高瘾婿,新需求總是做不完蜻牢。領(lǐng)導(dǎo)和客戶都希望新需求能夠快速交付烤咧。