我在博客文章《以RAID分析作為架構(gòu)驅(qū)動(dòng)力》中介紹了RAID分析方法。這個(gè)方法將風(fēng)險(xiǎn)作為其中的一個(gè)重要驅(qū)動(dòng)力,指導(dǎo)我們進(jìn)行架構(gòu)設(shè)計(jì),避免陷入未知的陷阱楞艾。
無(wú)獨(dú)有偶,Simon Brown在其著作Software Architecture for Developers中專(zhuān)門(mén)列出一個(gè)章節(jié)來(lái)闡釋風(fēng)險(xiǎn)龄广。他認(rèn)為:
識(shí)別風(fēng)險(xiǎn)是恰如其分的預(yù)先設(shè)計(jì)的一個(gè)關(guān)鍵的部分硫眯,簡(jiǎn)而言之,風(fēng)險(xiǎn)就是未來(lái)可能發(fā)生的壞事择同,比如所選技術(shù)無(wú)法滿足供應(yīng)商的承諾舟铜。
George Fairbanks在其著作Just Enough Software Architecture中更是將風(fēng)險(xiǎn)看做架構(gòu)設(shè)計(jì)的核心,提出“風(fēng)險(xiǎn)驅(qū)動(dòng)設(shè)計(jì)”的方法論奠衔。我作為本書(shū)的譯者之一谆刨,深刻地理解了這一方法,并在諸多項(xiàng)目中嘗試實(shí)踐归斤。
古語(yǔ)云:為將者痊夭,未慮勝先慮敗,故可百戰(zhàn)不殆矣脏里。這種“未慮勝先慮敗”的思維實(shí)則就是我們時(shí)常提及的風(fēng)險(xiǎn)思維她我。由于軟件架構(gòu)是整個(gè)系統(tǒng)中最重要也是最不容易改變的部分(另一層意思就是改變成本太高),若不能正確地預(yù)見(jiàn)風(fēng)險(xiǎn)迫横,并給出應(yīng)對(duì)之道番舆,一旦風(fēng)險(xiǎn)成為事實(shí)上的問(wèn)題,就可能導(dǎo)致整個(gè)系統(tǒng)架構(gòu)要推到重來(lái)矾踱,又或者付出即為沉重的重構(gòu)成本恨狈。
George Fairbanks在Just Enough Software Architecture書(shū)中給出一個(gè)風(fēng)險(xiǎn)驅(qū)動(dòng)設(shè)計(jì)的案例,介紹了Rackspace日志處理系統(tǒng)的演化呛讲,分別從本地日志文件演化到中央數(shù)據(jù)庫(kù)禾怠,進(jìn)而演化到基于HDFS的索引簇方案。這種演化固然說(shuō)明了在當(dāng)時(shí)當(dāng)刻做出的所謂“恰如其分”的架構(gòu)贝搁,但從另外一個(gè)層面來(lái)看吗氏,也可以視為風(fēng)險(xiǎn)意識(shí)不夠,沒(méi)有充分考慮到日志分析系統(tǒng)的可伸縮性雷逆,從而帶來(lái)兩次高成本的架構(gòu)重構(gòu)(甚至可以認(rèn)為是重寫(xiě))弦讽。
與RAID分析方法相似,Simon Brown在Software Architecture for Developers書(shū)中提出了一種幫助團(tuán)隊(duì)識(shí)別風(fēng)險(xiǎn)并排定優(yōu)先級(jí)的協(xié)作手段——風(fēng)險(xiǎn)風(fēng)暴膀哲。步驟如下:
- 首先在白板上繪制系統(tǒng)最高層的架構(gòu)圖(可以參考書(shū)中給出的C4模型)往产;
- 團(tuán)隊(duì)成員(架構(gòu)師、開(kāi)發(fā)者等太、項(xiàng)目經(jīng)理捂齐、業(yè)務(wù)分析師)在架構(gòu)圖前,各自寫(xiě)下他們能夠識(shí)別的風(fēng)險(xiǎn)缩抡,一個(gè)風(fēng)險(xiǎn)用一張便利貼奠宜,并量化該風(fēng)險(xiǎn);
- 將各自的便利貼貼在架構(gòu)圖上瞻想,鄰近風(fēng)險(xiǎn)被識(shí)別的區(qū)域压真;
- 對(duì)風(fēng)險(xiǎn)設(shè)定優(yōu)先級(jí)。
識(shí)別風(fēng)險(xiǎn)并評(píng)估其優(yōu)先級(jí)并非最終的目的蘑险。風(fēng)險(xiǎn)可以提前給我們以警示滴肿,之所以采用風(fēng)險(xiǎn)風(fēng)暴的形式,是希望通過(guò)團(tuán)隊(duì)成員的群策群力盡可能讓隱藏的風(fēng)險(xiǎn)暴露出來(lái)佃迄,從而為架構(gòu)設(shè)計(jì)提供重要的參考泼差。
于是乎贵少,識(shí)別風(fēng)險(xiǎn)大多數(shù)時(shí)候又與技術(shù)決策以及技術(shù)選型相關(guān),這才是真正考驗(yàn)架構(gòu)師技術(shù)能力堆缘、敏銳性滔灶、知識(shí)廣度與深度,以及設(shè)計(jì)經(jīng)驗(yàn)的關(guān)卡吼肥。這是一個(gè)很大的話題录平,我希望能結(jié)合廣泛的案例來(lái)深度探討這部分內(nèi)容。這里揭過(guò)不提缀皱,算是一個(gè)不禮貌的收尾斗这。