上一篇讀書筆記寫了什么是架構(gòu)化借、架構(gòu)的目的以及設計架構(gòu)的原則是什么周偎。這一篇讀書筆記主要講的是設計架構(gòu)的套路陶舞。
作者將設計架構(gòu)分為這幾個步驟:識別復雜度嗽测、設計備選方案、評估和選擇備選方案肿孵、詳細方案設計唠粥。
識別復雜度
架構(gòu)設計的本質(zhì)目的是為了解決軟件系統(tǒng)的復雜性,所以在設計架構(gòu)的第一步停做,便是分析系統(tǒng)的復雜性晤愧,找到影響系統(tǒng)的主要復雜因素。
架構(gòu)的復雜度主要從“高性能”蛉腌、“高可用”和“可擴展”三個方面考慮官份。作者認為大部分情況下,系統(tǒng)的復雜度只是其中的某一個烙丛,少數(shù)情況下包含其中兩個舅巷。
當然,如果接手了一個每個復雜度都存在問題的系統(tǒng)蜀变,可以通過一個個問題來解決解決的方式悄谐,不要幻想一次架構(gòu)重構(gòu)解決所有問題介评。具體做法就是库北,將主要的復雜度問題列出來,然后根據(jù)業(yè)務们陆、技術(shù)寒瓦、團隊等綜合情況進行排序,優(yōu)先解決當前面臨的最主要的復雜度問題坪仇。
設計備選方案
確定了系統(tǒng)面臨的主要復雜度后杂腰,就意味著方案設計有了明確的目標。
在設計方案時椅文,成熟的架構(gòu)師首先對已經(jīng)存在的技術(shù)非常熟悉喂很,對已經(jīng)驗證的架構(gòu)模式爛熟于心,然后根據(jù)自己對業(yè)務的理解皆刺,挑選合適的架構(gòu)模式進行組合少辣,再對組合后的方案進行修改和調(diào)整。
當然羡蛾,雖然現(xiàn)在技術(shù)還是層出不窮漓帅,但是經(jīng)過時間考驗,被各種場景驗證過的成熟技術(shù)更多,所以絕大部分時候架構(gòu)師在明確目標后忙干,也可以按圖索驥找到可選的解決方案器予。
此外,在這個階段捐迫,作者也有幾點建議:一乾翔、根據(jù)架構(gòu)設計原則中“簡單原則”的要求,挑選合適自己業(yè)務施戴、團隊末融、技術(shù)能力的方案是好方案;二暇韧,這個階段勾习,架構(gòu)師需要設計多個備選方案,3~5個方案為最佳懈玻,且方案的差異要比較明顯巧婶,使用的技術(shù)不要只局限于已經(jīng)熟悉的技術(shù)。三涂乌,備選方案階段的關(guān)注點是技術(shù)選型艺栈,不是技術(shù)細節(jié),所以備選方案不需要過于詳細湾盒。
評估和選擇備選方案
作者提出了“360度環(huán)評”湿右。具體操作就是:列出需要關(guān)注的質(zhì)量屬性點,然后從這些質(zhì)量屬性的維度去評估每個方案罚勾,再綜合挑選適合當時情況的最優(yōu)方案毅人。
常見的方案質(zhì)量屬性點有:性能、可用性尖殃、硬件成本丈莺、項目投入、復雜性送丰、安全性缔俄、可擴展性等。在評估這些屬性時器躏,要遵循“合適原則”和“簡單原則”俐载,避免貪大求全,基本上某個質(zhì)量屬性能夠滿足一定時期內(nèi)業(yè)務發(fā)展就可以了登失。
如果某個質(zhì)量屬性評估和業(yè)務發(fā)展有關(guān)系遏佣,需要評估未來業(yè)務發(fā)展的規(guī)模時,簡單的評估方式是將當前的業(yè)務規(guī)模乘以2~4即可壁畸。如果現(xiàn)在的基數(shù)較低贼急,則可以乘以4.
在備選方案360度環(huán)評時茅茂,可以采用按優(yōu)先級選擇,即設計師綜合當前的業(yè)務發(fā)展情況太抓、團隊人員規(guī)模和技能空闲、業(yè)務發(fā)展預測等因素,將質(zhì)量屬性按照優(yōu)先級排序走敌,首先挑選滿足第一優(yōu)先級的碴倾,如果方案都滿足,那就再看第二優(yōu)先級……以此類推掉丽。
詳細方案設計
詳細方案設計就是將方案涉及的關(guān)鍵技術(shù)細節(jié)確定下來跌榔,使得備選方案變成一個可以落地的設計方案。