作者:人人網(wǎng)架構(gòu)師 王志亮 人人網(wǎng)UGC團(tuán)隊(duì)博客首發(fā)
小的不才,斗膽發(fā)言
多角度定義架構(gòu)
定義架構(gòu)的最短形式是:“架構(gòu)是一種結(jié)構(gòu)”,太棒了,這是一種正確的理解,但世界還沒(méi)太平。若做一個(gè)比喻,架構(gòu)就像一個(gè)操作系統(tǒng),不同的角度有不同的理解,不同的關(guān)切者有各自的著重點(diǎn),多視點(diǎn)的不同理解都是架構(gòu)需要的,也只有通過(guò)多視點(diǎn)來(lái)考察才能演化出一個(gè)有效的架構(gòu)。
從靜態(tài)的角度,架構(gòu)要回答一個(gè)系統(tǒng)在技術(shù)上如何組織;從變化的角度,架構(gòu)要回答如何支持系統(tǒng)不斷產(chǎn)生的新功能、新變化以及適時(shí)的重構(gòu);從服務(wù)質(zhì)量的角度,架構(gòu)要平衡各種和用戶(hù)體驗(yàn)有關(guān)的指標(biāo);從運(yùn)維的角度,架構(gòu)要回答如何充分利用計(jì)算機(jī)或網(wǎng)絡(luò)資源及其擴(kuò)展策略;從經(jīng)濟(jì)的角度,架構(gòu)要回答如何在可行的基礎(chǔ)上降低實(shí)現(xiàn)成本等等。
沒(méi)有架構(gòu)策略的系統(tǒng),讓我詛咒它散掉: 人們不知道如何簡(jiǎn)單一致地理解,不知道如何加入一個(gè)新功能,如何調(diào)高或調(diào)低某個(gè)服務(wù)質(zhì)量指標(biāo),如何應(yīng)付增大的訪問(wèn),如何提高系統(tǒng)的容錯(cuò)能力或穩(wěn)定性,如何充分省錢(qián)。沒(méi)有良好架構(gòu)支持的系統(tǒng),出來(lái)混的遲早要還!我們?cè){咒他散掉。
如何得到一個(gè)良好的架構(gòu)?
只言片語(yǔ)
像媽媽那樣優(yōu)生
架構(gòu)所要做的是一個(gè)“細(xì)節(jié)還未完全落實(shí)的技術(shù)決策,這個(gè)決策是一個(gè)框架、是一種權(quán)衡、是一個(gè)路線圖”,這個(gè)決策規(guī)定了整個(gè)系統(tǒng)的技術(shù)“風(fēng)格”和后續(xù)技術(shù)發(fā)展方向。
系統(tǒng)的開(kāi)發(fā)是一個(gè)從無(wú)到有的過(guò)程,需要不斷地迭代:功能上不斷地豐富,技術(shù)上不斷地完善。如果把一個(gè)系統(tǒng)比喻一個(gè)人,怎么讓這個(gè)人不斷地往健康、完備的方向成長(zhǎng)就是我們的目的了。一開(kāi)始,這個(gè)人并不完善,包括很多器官并不成熟,甚至沒(méi)有,通過(guò)營(yíng)養(yǎng)的攝入,時(shí)間的沉淀,不斷地重構(gòu)最終成功。人也需要重構(gòu)?!不是嗎?血液的60天一變換,牙齒的兩次生長(zhǎng)等等(注1),有一個(gè)專(zhuān)業(yè)術(shù)語(yǔ)“新陳代謝”! 當(dāng)一個(gè)人新陳代謝的能力下降的時(shí)候,也就是老了。
在系統(tǒng)從無(wú)到有的過(guò)程,架構(gòu)要著眼于未來(lái),落實(shí)于現(xiàn)在,規(guī)劃迭代、優(yōu)化的路徑。這個(gè)架構(gòu)要支持目前最緊迫的任務(wù):“生出來(lái)”,也要支持以后能不斷地新陳代謝的可能性,兩者缺一不可。
像理想那樣追求
系統(tǒng)的每個(gè)階段都很重要,一個(gè)好的起點(diǎn)并不意味著一直會(huì)好下去,制定了各種策略后,貫徹、執(zhí)行是最重要的課題。沒(méi)有人一開(kāi)始就想把一件事情做糟糕,但這個(gè)世界就是這樣,很多事情都會(huì)變壞,越來(lái)越不可控。導(dǎo)致如此境地的主觀原因就是自己沒(méi)有設(shè)法去維護(hù)、堅(jiān)持、貫徹原先的理想。作為一個(gè)程序員或架構(gòu)員,要不斷審視自己開(kāi)發(fā)的系統(tǒng),主動(dòng)維護(hù)系統(tǒng)的架構(gòu),如若發(fā)現(xiàn)有對(duì)架構(gòu)產(chǎn)生破壞的地方,應(yīng)該適時(shí)糾正,堅(jiān)持零容忍。如果不零容忍會(huì)怎樣?千里之堤潰于蟻穴,我們?cè){咒他散掉。
誰(shuí)來(lái)做架構(gòu)?
架構(gòu)師這樣的一個(gè)帽子,很多人會(huì)閃閃躲躲。
國(guó)外多少年的工作經(jīng)驗(yàn)才可能成就一個(gè)架構(gòu)師,而國(guó)內(nèi)3、5年工作經(jīng)驗(yàn)的小毛頭就說(shuō)自己是個(gè)架構(gòu)師了。通常認(rèn)為,架構(gòu)師理應(yīng)無(wú)所不能,一旦有人被稱(chēng)為架構(gòu)師,他就應(yīng)該接受重重的檢驗(yàn)??傊?,那些自稱(chēng)是架構(gòu)師的人在冒著道德風(fēng)險(xiǎn)。但,同學(xué)們不要膽卻,所謂時(shí)勢(shì)造英雄。有人稱(chēng)你是一個(gè)英雄,那是因?yàn)槟惚恍枰?,要勇敢地站出?lái),扮演好自己的角色是對(duì)崗位的敬畏。當(dāng)我把你看成是一位架構(gòu)師的時(shí)候,我需要你不斷地給自己暗示,不斷地以理想的架構(gòu)師來(lái)要求自己,和同學(xué)們?cè)诠ぷ髦袑W(xué)習(xí),一項(xiàng)一項(xiàng)地突破自己,把工作做好。
一個(gè)組織可能會(huì)明確地任命一些人為架構(gòu)師,但大部分的組織可能不會(huì)。但在一個(gè)項(xiàng)目團(tuán)隊(duì)中總有需要有人完成類(lèi)似的工作,這可能是一個(gè)人,也可能是整個(gè)團(tuán)隊(duì)在商量的氣氛中完成。
我的意見(jiàn)是:如果你愿意,你就是架構(gòu)師!
架構(gòu)模式
當(dāng)一個(gè)問(wèn)題、一個(gè)系統(tǒng)可以采用很多解決方式來(lái)設(shè)計(jì)時(shí),我們采用什么方式并且以一致的思想、方式解決這個(gè)問(wèn)題時(shí),這就是風(fēng)格了,當(dāng)這種風(fēng)格具有可復(fù)用性那就是一種模式了。在編程上,我們有“設(shè)計(jì)模式”的指導(dǎo),在架構(gòu)上,我們也應(yīng)該總結(jié)一些良好的模式出來(lái),應(yīng)用在不同的情況。關(guān)于這方面的資料,目前并不難找。
小的不才,發(fā)言結(jié)束。請(qǐng)多指教。
注1:周期數(shù)字沒(méi)有核實(shí)準(zhǔn)確性,但意思已到。
聯(lián)系客服