第68篇
極客時(shí)間《從0開(kāi)始學(xué)架構(gòu)》課程筆記耿眉。
編程的本質(zhì)是『確定性』鸣剪,同樣一段代碼西傀,在任何時(shí)候執(zhí)行,結(jié)果應(yīng)該是確定的娘锁,有bug也是確定的。
而架構(gòu)設(shè)計(jì)的本質(zhì)是『不確定性』镊屎,同樣的一個(gè)系統(tǒng)缝驳,不同公司不同架構(gòu)師做出的設(shè)計(jì)差異可能很大用狱,但都能正常運(yùn)轉(zhuǎn)夏伊。
架構(gòu)設(shè)計(jì)更多的是面對(duì)多種可能性時(shí)進(jìn)行選擇溺忧。
架構(gòu)設(shè)計(jì)領(lǐng)域沒(méi)有通用規(guī)范祟滴,更多的是依賴經(jīng)驗(yàn)和直覺(jué)踱启。
但有3個(gè)共性原則隱含其中埠偿,這就是:合適原則、簡(jiǎn)單原則抖剿、演化原則识窿。
合適原則:『合適優(yōu)于業(yè)界領(lǐng)先』
- 是否『領(lǐng)先』缩宜,是否『億級(jí)』都不重要锻煌,腳踏實(shí)地的實(shí)現(xiàn)架構(gòu)是最重要的
- 有多少人干多少活宋梧,十個(gè)人團(tuán)隊(duì)想做幾十人才能完成的事情捂龄,失敗機(jī)率太大
- 領(lǐng)先的方案不是拍腦袋靈機(jī)一動(dòng)得來(lái)的跺讯,而是經(jīng)過(guò)長(zhǎng)時(shí)間的發(fā)展逐步完善的
- 業(yè)界領(lǐng)先的方案都是業(yè)務(wù)發(fā)展到一定階段才催生出來(lái)的,不是一蹴而就的
真正優(yōu)秀的架構(gòu)都是在企業(yè)當(dāng)前人力愈污、條件暂雹、業(yè)務(wù)等各種約束下設(shè)計(jì)出來(lái)的杭跪,能夠合理地將資源整合在一起并發(fā)揮出最大功效,并且能夠快速落地姑廉。
簡(jiǎn)單原則:『簡(jiǎn)單優(yōu)于復(fù)雜』
- 技術(shù)越來(lái)越精細(xì)和復(fù)雜桥言,導(dǎo)致架構(gòu)設(shè)計(jì)時(shí)也想把架構(gòu)做精美、做復(fù)雜扔涧,以便體現(xiàn)技術(shù)實(shí)力
- 團(tuán)隊(duì)壓力也會(huì)促使架構(gòu)走向復(fù)雜,因?yàn)樵u(píng)價(jià)方案水平高低時(shí)卤档,復(fù)雜性是重要參考指標(biāo)
- 『復(fù)雜』在軟件領(lǐng)域劝枣,代表的不是領(lǐng)先或者先進(jìn)溪胶,而是『?jiǎn)栴}』
- 軟件領(lǐng)域的復(fù)雜性有兩個(gè):結(jié)構(gòu)的復(fù)雜性哗脖、邏輯的復(fù)雜性
- 結(jié)構(gòu)復(fù)雜的特點(diǎn)是組件數(shù)量多才避、組件之間的關(guān)系復(fù)雜;因而可能導(dǎo)致:組件故障率高楞遏、一個(gè)組件改動(dòng)影響關(guān)聯(lián)的所有組件、定位問(wèn)題更加困難。
- 邏輯復(fù)雜的特點(diǎn)是單個(gè)組件承擔(dān)了太多功能珊皿、采用了復(fù)雜算法;因而導(dǎo)致難以實(shí)現(xiàn)、難以修改抄淑、問(wèn)題無(wú)法快速解決郑原。
- 如果簡(jiǎn)單方案和復(fù)雜方案都可以滿足要求,架構(gòu)設(shè)計(jì)應(yīng)選擇簡(jiǎn)單方案
《UNIX 編程藝術(shù)》總結(jié)的 KISS(Keep It Simple, Stupid!)原則一樣適應(yīng)于架構(gòu)設(shè)計(jì)犯犁。
演化原則:『演化優(yōu)于一步到位』
- 軟件架構(gòu)與建筑架構(gòu)在定義和理解上有相似性属愤,但存在本質(zhì)差異:軟件需要不斷變化
- 架構(gòu)設(shè)計(jì)的誤區(qū):一步到位的設(shè)計(jì)一個(gè)軟件架構(gòu),期望不管業(yè)務(wù)如何變化都能適應(yīng)
- 軟件架構(gòu)設(shè)計(jì)更類似于『設(shè)計(jì)』一個(gè)生物:通過(guò)演化讓生物適應(yīng)環(huán)境酸役,并逐步變得強(qiáng)大
- 明確當(dāng)前業(yè)務(wù)特點(diǎn)和主要問(wèn)題才是設(shè)計(jì)的根本住诸,不符合業(yè)務(wù)的架構(gòu)再領(lǐng)先也沒(méi)用
架構(gòu)師在進(jìn)行架構(gòu)設(shè)計(jì)時(shí)需要牢記這個(gè)原則,時(shí)刻提醒自己不要貪大求全簇捍,或者盲目照搬大公司的做法只壳。
總結(jié)
合適原則>簡(jiǎn)單原則>演化原則俏拱。第一原則:合適原則暑塑,優(yōu)先滿足現(xiàn)有業(yè)務(wù)需求;第二原則:簡(jiǎn)單原則锅必,選擇簡(jiǎn)單方案快速落地驗(yàn)證事格;第三原則:演化原則,適當(dāng)預(yù)測(cè)業(yè)務(wù)發(fā)展搞隐,在問(wèn)題出現(xiàn)時(shí)演進(jìn)驹愚。三個(gè)原則是一體的,相輔相成劣纲。