2011-04-07 16:49 51
軟件測(cè)試架構(gòu)師是一個(gè)新職位,但也是一個(gè)非常必要的職位。一個(gè)普通程序員要想修煉成為測(cè)試架構(gòu)師必須具備三大能力:準(zhǔn)確的商業(yè)理解力、區(qū)分測(cè)試重點(diǎn)和測(cè)試難點(diǎn)、全面多樣化的產(chǎn)品經(jīng)驗(yàn)。本篇文章向你詳細(xì)介紹一個(gè)測(cè)試架構(gòu)師必須具備的第一大能力:準(zhǔn)確的商業(yè)理解力!
一個(gè)測(cè)試架構(gòu)師必須具備的第一大能力:準(zhǔn)確的商業(yè)理解力!
最近看到一篇關(guān)于測(cè)試架構(gòu)師介紹的文章,文章中的測(cè)試架構(gòu)師原型來(lái)自微軟,其描述的工作內(nèi)容讓不少?lài)?guó)內(nèi)的測(cè)試同業(yè)很是羨慕,但又覺(jué)得好像離我們中國(guó)人很遠(yuǎn)。不知我們中國(guó)的測(cè)試工程師能做嗎?我的答案是Yes。
因?yàn)?,我現(xiàn)在就在中國(guó)帶領(lǐng)著一個(gè)測(cè)試架構(gòu)師團(tuán)隊(duì)。了解自己所在公司測(cè)試架構(gòu)師團(tuán)隊(duì)的運(yùn)作和工作內(nèi)容(后續(xù)將陸續(xù)與大家分享),雖然我們之前也從未接觸過(guò)微軟的測(cè)試架構(gòu)師。但隨著公司業(yè)務(wù)的擴(kuò)大,業(yè)務(wù)的需要驅(qū)動(dòng)了我們公司內(nèi)部有一小部分人擔(dān)當(dāng)起了測(cè)試架構(gòu)師的職責(zé),其title來(lái)源也是有其偶然性。原本公司中測(cè)試工程師往上發(fā)展就是系統(tǒng)測(cè)試工程師,系統(tǒng)測(cè)試工程師再往上應(yīng)該叫什么呢?最后參考軟件開(kāi)發(fā)的title,就開(kāi)創(chuàng)性的在公司內(nèi)部叫測(cè)試架構(gòu)師。并開(kāi)始從事了很多從公司層面而僅非單個(gè)測(cè)試經(jīng)理層面所需要的新的測(cè)試工作職責(zé),例如:領(lǐng)導(dǎo)負(fù)責(zé)一個(gè)產(chǎn)品線(xiàn)或一個(gè)大產(chǎn)品的測(cè)試技術(shù)規(guī)劃,early testing,系統(tǒng)測(cè)試工程師的培養(yǎng),與開(kāi)發(fā)架構(gòu)師一起設(shè)計(jì)和改進(jìn)架構(gòu)的設(shè)計(jì)質(zhì)量,測(cè)試執(zhí)行活動(dòng)質(zhì)量的審查保障,親自指導(dǎo)重點(diǎn)測(cè)試方案的設(shè)計(jì),為了不斷降低公司研發(fā)成本而進(jìn)行新測(cè)試技術(shù)研究實(shí)踐和推廣,基于風(fēng)險(xiǎn)的測(cè)試,基于模型的測(cè)試,安全性測(cè)試,兼容性自動(dòng)化測(cè)試,分布式自動(dòng)化測(cè)試,性能壓力測(cè)試,需求測(cè)試等專(zhuān)項(xiàng)測(cè)試技術(shù)領(lǐng)域的研究,并支撐新領(lǐng)域重點(diǎn)市場(chǎng)項(xiàng)目活動(dòng)等等。
與微軟的共性是我們的測(cè)試架構(gòu)師都不再親自寫(xiě)自動(dòng)化測(cè)試腳本,不親自寫(xiě)測(cè)試工具的代碼。但我們會(huì)從項(xiàng)目初始即項(xiàng)目需求和架構(gòu)設(shè)計(jì)階段就開(kāi)始考慮未來(lái)的自動(dòng)化測(cè)試框架,針對(duì)具體的產(chǎn)品特點(diǎn),思考選擇最合適的自動(dòng)化測(cè)試語(yǔ)言;在架構(gòu)設(shè)計(jì)中充分考慮如何支撐未來(lái)更高的自動(dòng)化測(cè)試率,讓架構(gòu)設(shè)計(jì)調(diào)整具備高的可測(cè)試性率;由于參與早期的設(shè)計(jì)方案討論選型,能提前識(shí)別和規(guī)劃好未來(lái)產(chǎn)品測(cè)試組所需要提前準(zhǔn)備的測(cè)試實(shí)現(xiàn)技術(shù)。并親自帶著測(cè)試工程師提前進(jìn)行測(cè)試技術(shù)儲(chǔ)備。當(dāng)然我們也常常親自去實(shí)施一些測(cè)試活動(dòng):如設(shè)計(jì)測(cè)試工具的架構(gòu)(主要考慮未來(lái)擴(kuò)展性和更好滿(mǎn)足測(cè)試需求),然后交給專(zhuān)門(mén)的測(cè)試工具開(kāi)發(fā)團(tuán)隊(duì)來(lái)實(shí)現(xiàn);或親自設(shè)計(jì)壓力測(cè)試方案;親自研究安全性測(cè)試策略和方案。推廣方式,主要是親自實(shí)踐各種新測(cè)試技術(shù)后,再帶著測(cè)試人員在實(shí)戰(zhàn)中掌握相關(guān)的方法。
我們大部分的測(cè)試架構(gòu)師都是寫(xiě)過(guò)自動(dòng)化測(cè)試腳本或程序的,只是現(xiàn)在的工作由于需要我們?nèi)ニ伎继嗟臇|西,所以沒(méi)有一丁點(diǎn)精力來(lái)編碼。特別是負(fù)責(zé)一個(gè)產(chǎn)品線(xiàn)的測(cè)試架構(gòu)師,由于負(fù)責(zé)多個(gè)產(chǎn)品,還要抽取產(chǎn)品間的共性測(cè)試技術(shù),要建立起產(chǎn)品線(xiàn)的測(cè)試架構(gòu)圖,統(tǒng)一產(chǎn)品間的測(cè)試技術(shù),統(tǒng)一測(cè)試方案的設(shè)計(jì)質(zhì)量標(biāo)準(zhǔn),需要具備更強(qiáng)的抽取共性的能力。同時(shí),還需要能在短期內(nèi)快速了解和識(shí)別影響產(chǎn)品成敗的關(guān)鍵測(cè)試技術(shù),因?yàn)椴⒉皇撬挟a(chǎn)品都是性能壓力測(cè)試就是最重要的。例如:某產(chǎn)品線(xiàn)有9個(gè)產(chǎn)品,有的產(chǎn)品最需要保障的是可靠性(性能,可用性不是關(guān)鍵);有的產(chǎn)品最需要保障的卻是可用性,而不是可靠性;有的產(chǎn)品最需要保障的是安全性,而不是性能;有的產(chǎn)品最需要保障的是可移植能力和可集成能力,而不是性能。那么相應(yīng)的每個(gè)產(chǎn)品測(cè)試用例設(shè)計(jì)就會(huì)有所側(cè)重,例如:對(duì)于重視可移植能力和可集成能力的產(chǎn)品,測(cè)試架構(gòu)師就應(yīng)該幫助測(cè)試人員系統(tǒng)地做好這2個(gè)領(lǐng)域的測(cè)試用例。
因此,測(cè)試架構(gòu)師必須具備的第一個(gè)能力就是:“準(zhǔn)確的商業(yè)理解力?!鄙虡I(yè)成功的核心競(jìng)爭(zhēng)力是什么?測(cè)試技術(shù)和測(cè)試資源是否能真正地保障或支撐商業(yè)成功的核心競(jìng)爭(zhēng)力?這些都是測(cè)試架構(gòu)師需要準(zhǔn)確識(shí)別的,如果測(cè)試架構(gòu)師識(shí)別錯(cuò)誤了,那么有可能在需要重點(diǎn)保障的領(lǐng)域,測(cè)試技術(shù)和測(cè)試資源投入不足,導(dǎo)致最后產(chǎn)品的商業(yè)競(jìng)爭(zhēng)力得不到支撐,得不到質(zhì)量保障。例如:某產(chǎn)品對(duì)外宣傳是業(yè)界可靠性最高的產(chǎn)品,可是測(cè)試人員在測(cè)試活動(dòng)中慣性地把主要精力都花在了性能測(cè)試中,對(duì)各種異常的測(cè)試驗(yàn)證并不是業(yè)界最豐富的。結(jié)果在與業(yè)內(nèi)其他產(chǎn)品比較的第三方測(cè)試報(bào)告中,該產(chǎn)品的可靠性得分卻并不是第一,雖然性能是第一,但該產(chǎn)品在特定的重視可靠性的市場(chǎng)中基本失去了商業(yè)競(jìng)爭(zhēng)力。
某美國(guó)公司的一款產(chǎn)品在傳統(tǒng)行業(yè)中主要功能基本雷同,如何才能與類(lèi)似產(chǎn)品拉開(kāi)距離,突出競(jìng)爭(zhēng)力。后發(fā)現(xiàn)產(chǎn)品的用戶(hù)在使用產(chǎn)品時(shí)普通操作時(shí)間都較長(zhǎng),因此為了縮短用戶(hù)的操作時(shí)間,該公司決定在產(chǎn)品的可用性領(lǐng)域重點(diǎn)投入設(shè)計(jì),核心競(jìng)爭(zhēng)力是解決用戶(hù)的可用性問(wèn)題。其測(cè)試團(tuán)隊(duì)把大部分的測(cè)試設(shè)計(jì)精力也放在了可用性的測(cè)試活動(dòng)中,構(gòu)建了業(yè)界非常豐富的可用性測(cè)試用例,這些測(cè)試用例的場(chǎng)景超過(guò)了產(chǎn)品設(shè)計(jì)考慮的原有場(chǎng)景,并最終通過(guò)測(cè)試驅(qū)動(dòng)設(shè)計(jì),與產(chǎn)品設(shè)計(jì)師一起不斷改進(jìn)產(chǎn)品的可用性。最后不但提供了業(yè)界可用性最強(qiáng)的產(chǎn)品,而且其可用性功能的穩(wěn)定性質(zhì)量也非常高。測(cè)試活動(dòng)從效率和質(zhì)量角度支撐了產(chǎn)品的商業(yè)成功。
所以,如果你的公司正準(zhǔn)備招募測(cè)試架構(gòu)師,請(qǐng)第一考評(píng)他的能力應(yīng)該是他的商業(yè)理解力。具有該能力的測(cè)試工程師知道如何選擇:做正確的事!確保事半功倍。而不具備該能力的測(cè)試工程師可以成為系統(tǒng)測(cè)試工程師,由他來(lái)保障正確的把事做好!
測(cè)試架構(gòu)師必須具備的第二個(gè)能力:區(qū)分測(cè)試重點(diǎn)和測(cè)試難點(diǎn)!
重點(diǎn)和難點(diǎn)兩個(gè)詞匯有時(shí)能代表同樣的方向,有時(shí)卻是相差較遠(yuǎn)的方向。
為什么我要把是否有能力區(qū)分測(cè)試重點(diǎn)和測(cè)試難點(diǎn)作為測(cè)試架構(gòu)師必備的第二個(gè)基本能力。因?yàn)椋以谀钞a(chǎn)品線(xiàn)對(duì)測(cè)試活動(dòng)的質(zhì)量進(jìn)行抽查時(shí),與每個(gè)產(chǎn)品的系統(tǒng)測(cè)試工程師進(jìn)行了溝通,發(fā)現(xiàn)只有一名有6年經(jīng)驗(yàn)的系統(tǒng)測(cè)試工程師在我的的啟發(fā)下,分清了自己所負(fù)責(zé)產(chǎn)品的測(cè)試重點(diǎn)和測(cè)試難點(diǎn)。而其他的系統(tǒng)測(cè)試工程師一直都把測(cè)試難點(diǎn)誤當(dāng)成了測(cè)試重點(diǎn),作為他技術(shù)攻關(guān)工作的主力方向。甚至從來(lái)沒(méi)有真正思考過(guò)什么測(cè)試技術(shù)才是自己所負(fù)責(zé)產(chǎn)品決定成敗的測(cè)試重點(diǎn),只是簡(jiǎn)單地把自己在工作中碰到的所不具有的測(cè)試技術(shù)都當(dāng)成測(cè)試重點(diǎn),其實(shí)很多都只是測(cè)試難點(diǎn)。的確,在某些產(chǎn)品測(cè)試難點(diǎn)和測(cè)試重點(diǎn)剛好重合。雖然某些產(chǎn)品測(cè)試重點(diǎn)在技術(shù)上并不難,但是卻需要我們把測(cè)試重點(diǎn)部分的工作質(zhì)量做到最佳,時(shí)間和資源投入最多,而不要把有限的資源投入到測(cè)試難點(diǎn)的工作中去。我很認(rèn)同華為任正非對(duì)華為工程師的要求“要做工程商人”,我們其他公司的工程師同樣應(yīng)該以商業(yè)目標(biāo)為自己的技術(shù)工作目標(biāo),不應(yīng)唯技術(shù)論,越新的技術(shù),越難的技術(shù)就越愿意投入。測(cè)試工程師同樣要心中一直有一個(gè)目標(biāo)指引著自己的所有技術(shù)工作方向。這個(gè)目標(biāo)就是我測(cè)試架構(gòu)師日記中第一篇談到的“準(zhǔn)確的商業(yè)理解力”告訴你的工作目標(biāo)。
由于項(xiàng)目中每個(gè)人的分工不同,因此不可能每個(gè)測(cè)試人員一開(kāi)始就能知道自己工作的商業(yè)目標(biāo)是什么,所以也不用去責(zé)怪大家??墒穷I(lǐng)導(dǎo)產(chǎn)品的測(cè)試架構(gòu)師不能準(zhǔn)確的識(shí)別或培養(yǎng)其他測(cè)試工程師具備識(shí)別測(cè)試重點(diǎn)和測(cè)試難點(diǎn)的能力,那么注定這個(gè)測(cè)試團(tuán)隊(duì)的工作不但質(zhì)量保障會(huì)打折扣,而且會(huì)浪費(fèi)不少組織的資源和成本。
因?yàn)橘Y源和時(shí)間是有限的,而完美工作的追求是無(wú)限的。因此,我們?nèi)绾卧谟邢薜馁Y源和時(shí)間下,保障基本的質(zhì)量目標(biāo),并盡可能提升質(zhì)量目標(biāo)。就需要在分清測(cè)試重點(diǎn)后,優(yōu)先針對(duì)測(cè)試重點(diǎn)目標(biāo)進(jìn)行系統(tǒng)地測(cè)試技術(shù)研究,測(cè)試技術(shù)攻關(guān),測(cè)試資源主要投入。對(duì)于非測(cè)試重點(diǎn)的測(cè)試難點(diǎn)部分就要降低優(yōu)先級(jí),放在最后考慮。
測(cè)試架構(gòu)師的工作應(yīng)該牢牢抓住真正的測(cè)試重點(diǎn)來(lái)開(kāi)展,甚至在整個(gè)產(chǎn)品測(cè)試組都方向錯(cuò)誤時(shí),要能從商業(yè)角度幫助測(cè)試組改變觀點(diǎn)。那么當(dāng)從測(cè)試經(jīng)理到普通工程師都誤理解了測(cè)試重點(diǎn)時(shí),測(cè)試架構(gòu)師應(yīng)該如何來(lái)啟發(fā)他們呢?我這里就分享一個(gè)案例吧:
在一次到產(chǎn)品測(cè)試組進(jìn)行測(cè)試活動(dòng)質(zhì)量抽檢時(shí)。我們問(wèn)測(cè)試經(jīng)理,你們產(chǎn)品測(cè)試目前最大的需求是什么?他說(shuō)是如何進(jìn)行壓力測(cè)試和性能測(cè)試,希望我們測(cè)試架構(gòu)師團(tuán)隊(duì)能在此領(lǐng)域多給予支持。我心里知道:他所負(fù)責(zé)的產(chǎn)品特性核心不是性能和壓力測(cè)試,但我沒(méi)有反駁他。而是繼續(xù)問(wèn)他下一個(gè)問(wèn)題:“你覺(jué)得會(huì)讓你產(chǎn)品未來(lái)應(yīng)用時(shí)商業(yè)失敗的最大擔(dān)心是什么?”他想了想說(shuō):“不能對(duì)客戶(hù)的生產(chǎn)系統(tǒng)產(chǎn)生破壞,讓客戶(hù)的業(yè)務(wù)中斷。”“依據(jù)我們的經(jīng)驗(yàn),與客戶(hù)生產(chǎn)系統(tǒng)交互的模塊雖然是個(gè)小模塊,但是在其他產(chǎn)品上經(jīng)常出現(xiàn)內(nèi)存泄露的故障從而破壞了生產(chǎn)系統(tǒng)。那你針對(duì)該小模塊做過(guò)哪些系統(tǒng)地測(cè)試?有無(wú)專(zhuān)門(mén)進(jìn)行內(nèi)存泄露的測(cè)試,因?yàn)閮?nèi)存泄露對(duì)客戶(hù)生產(chǎn)系統(tǒng)的破壞最大?!蔽覇?wèn)到。這時(shí)此測(cè)試經(jīng)理才恍然大悟,這個(gè)對(duì)生產(chǎn)系統(tǒng)質(zhì)量影響最大的小模塊居然沒(méi)有系統(tǒng)地進(jìn)行過(guò)深入全面的測(cè)試。我這時(shí)告訴他 “你之所以開(kāi)始說(shuō)性能和壓力測(cè)試是你的重點(diǎn)需求,是因?yàn)槟銈兘M里沒(méi)有在性能和壓力測(cè)試方面的積累,有工作開(kāi)展的難處,這是困擾你的困惑。但是你的產(chǎn)品形態(tài)的質(zhì)量不是性能或所謂壓力測(cè)試來(lái)保障的,而是需要不對(duì)生產(chǎn)系統(tǒng)產(chǎn)生破壞。因此,你唯一能破壞生產(chǎn)系統(tǒng)的那個(gè)小模塊應(yīng)該是你整個(gè)產(chǎn)品中質(zhì)量最高的模塊,也應(yīng)該是測(cè)試最全面最深入的模塊,你的技術(shù)力量應(yīng)該主要投到這個(gè)地方”。后來(lái),針對(duì)該小模塊我們進(jìn)行專(zhuān)項(xiàng)內(nèi)存泄露的測(cè)試,結(jié)果發(fā)現(xiàn)了好幾個(gè)內(nèi)存泄露的大bug,這些bug每一個(gè)都是會(huì)導(dǎo)致客戶(hù)生產(chǎn)系統(tǒng)中斷的殺手。
測(cè)試架構(gòu)師不是團(tuán)隊(duì)中專(zhuān)門(mén)解決測(cè)試難點(diǎn)的專(zhuān)家,而是識(shí)別測(cè)試重點(diǎn),并支撐測(cè)試重點(diǎn)工作的專(zhuān)家?!皡^(qū)分測(cè)試重點(diǎn)和難點(diǎn)的能力”不是測(cè)試架構(gòu)師獨(dú)有,系統(tǒng)測(cè)試工程師和測(cè)試工程師一樣可以具有。與第一篇“準(zhǔn)確的商業(yè)理解力”一樣,第二篇要做的是:做正確的事。
測(cè)試架構(gòu)師必須具備的第三個(gè)能力:全面多樣化的產(chǎn)品經(jīng)驗(yàn)!
在開(kāi)始描述我理想中的測(cè)試架構(gòu)師必備素質(zhì)第三篇前,我想先轉(zhuǎn)載一篇來(lái)自互聯(lián)網(wǎng)萬(wàn)欣的文章《好的架構(gòu)師都是善良的獨(dú)裁者——萬(wàn)欣》與大家分享,作為測(cè)試架構(gòu)師必備素質(zhì)第三篇的前言:
對(duì)于任何一個(gè)軟件開(kāi)發(fā)人員來(lái)說(shuō),架構(gòu)師都是一個(gè)令人向往的角色。就連世界首富比爾蓋茨在2000年卸任公司CEO的同時(shí),也擔(dān)任了微軟公司的榮譽(yù)角色“首席軟件架構(gòu)師”,可見(jiàn)“架構(gòu)師”這一稱(chēng)謂的吸引力。架構(gòu)師是公司的“金領(lǐng)”,有著非常高的收入,很少需要考慮生存的問(wèn)題,從而有更多的精力思考關(guān)鍵技術(shù)問(wèn)題,形成“強(qiáng)者愈強(qiáng)”的良性循環(huán)。部分優(yōu)秀的開(kāi)發(fā)人員在工作了一定時(shí)間后,就要開(kāi)始考慮自己的未來(lái)到底向哪個(gè)方向發(fā)展。如果開(kāi)發(fā)人員的溝通能力強(qiáng)過(guò)技術(shù)能力,在補(bǔ)充一定的項(xiàng)目管理知識(shí)后,可以向技術(shù)管理的方向轉(zhuǎn)型。如果其對(duì)技術(shù)一直很感興趣,而溝通能力也不弱,則可以試著進(jìn)一步加強(qiáng)技術(shù)修養(yǎng),以期向架構(gòu)師的方向發(fā)展,最終“修成正果”。
那么,到底什么是架構(gòu)師呢?所謂的架構(gòu)師,應(yīng)該是一個(gè)技術(shù)企業(yè)的最高技術(shù)決策者。他主要負(fù)責(zé)公司軟件產(chǎn)品或軟件項(xiàng)目的技術(shù)路線(xiàn)與技術(shù)框架的制訂。好的架構(gòu)師都是善良的獨(dú)裁者,具有很強(qiáng)的技術(shù)、良好的寫(xiě)作能力、良好的口頭表達(dá)能力,能夠在各個(gè)層次進(jìn)行溝通。從開(kāi)發(fā)人員到架構(gòu)師的成長(zhǎng)應(yīng)該是階梯式的,一般來(lái)講開(kāi)發(fā)人員在剛剛開(kāi)始工作時(shí)只能開(kāi)發(fā)簡(jiǎn)單的獨(dú)立軟件模塊,慢慢的隨著經(jīng)驗(yàn)的增長(zhǎng),他開(kāi)始接觸一些相互之間有信息傳遞的模塊,而后來(lái),他會(huì)發(fā)現(xiàn)自己接到的開(kāi)發(fā)任務(wù)已經(jīng)不是一個(gè)獨(dú)立的單體,這些任務(wù)由一些專(zhuān)門(mén)的軟件部分組成,可能包含數(shù)據(jù)庫(kù),工作流引擎,消息服務(wù)等等各種功能模塊,可能分布在不同的服務(wù)器上,所有的部分協(xié)同起來(lái),完成軟件功能。而這時(shí)候,體系結(jié)構(gòu)的好壞將直接決定了系統(tǒng)的性能和可擴(kuò)展性,而就在這時(shí)候,這名優(yōu)秀的開(kāi)發(fā)人員也開(kāi)始思考架構(gòu)師應(yīng)該思考的問(wèn)題了,或者說(shuō),他向成長(zhǎng)為架構(gòu)師的道路邁出了一大步。
什么是架構(gòu)師最具價(jià)值的技能呢?就是要了解不同的知識(shí),做一個(gè)“雜家”或者說(shuō)“博學(xué)家”。當(dāng)然,如果你的數(shù)據(jù)庫(kù)技術(shù)非常棒,或者你在工作流引擎方面具有不可超越的專(zhuān)家知識(shí),那也是很不錯(cuò)的。好的架構(gòu)師有好多都是從專(zhuān)家成長(zhǎng)過(guò)來(lái)的。但是,這不是架構(gòu)師應(yīng)該做的事情,架構(gòu)師應(yīng)該做的是了解所有的東西,既了解技術(shù)的宏觀面,又了解技術(shù)的細(xì)節(jié)。真正的架構(gòu)師不僅僅要了解軟件,也要了解硬件,在關(guān)鍵的部位使用合適的硬件來(lái)取代軟件,可以成倍甚至成百倍的提高整個(gè)系統(tǒng)的效率。下面我將會(huì)以互聯(lián)網(wǎng)行業(yè)對(duì)的架構(gòu)師的要求為例,向大家講解作為架構(gòu)師應(yīng)該具備的知識(shí)。
互聯(lián)網(wǎng)行業(yè)是當(dāng)前最激動(dòng)人心的行業(yè)之一,很多的創(chuàng)新都來(lái)自于這個(gè)行業(yè),而每一個(gè)大型的網(wǎng)站如Google,Yahoo,Myspace等都需要解決一個(gè)非常復(fù)雜的問(wèn)題,就是網(wǎng)站的分布式向外擴(kuò)展(Scale Out)的問(wèn)題。解決這個(gè)問(wèn)題,需要最優(yōu)秀的架構(gòu)師對(duì)業(yè)務(wù)進(jìn)行剖析,利用軟硬件將網(wǎng)站進(jìn)行重構(gòu),甚至根據(jù)業(yè)務(wù)研發(fā)相應(yīng)的分布式技術(shù),解決網(wǎng)站復(fù)雜的分布式計(jì)算的問(wèn)題。
如果你想在這個(gè)行業(yè)中成為一名架構(gòu)師的話(huà),需要至少掌握網(wǎng)絡(luò)知識(shí),硬件,軟件,網(wǎng)站優(yōu)化等方方面面的知識(shí):
網(wǎng)絡(luò)知識(shí)
當(dāng)前的軟件已經(jīng)絕對(duì)不是那種僅僅跑在一臺(tái)單機(jī)上的孤立應(yīng)用了。不僅僅是在互聯(lián)網(wǎng)行業(yè),任何一個(gè)行業(yè)的軟件,都要求其具有網(wǎng)絡(luò)功能。因此,網(wǎng)絡(luò)知識(shí)是架構(gòu)師必備的知識(shí)。我們所說(shuō)的網(wǎng)絡(luò)知識(shí),不僅僅包括TCP/IP,http等互聯(lián)網(wǎng)行業(yè)常用的軟件協(xié)議,也包括網(wǎng)絡(luò)規(guī)劃,甚至更具體的說(shuō),根據(jù)網(wǎng)站應(yīng)用所處的地理環(huán)境進(jìn)行網(wǎng)絡(luò)規(guī)劃。比如人們常說(shuō):“這世界上最遠(yuǎn)的距離不是生與死的距離,而是電信到網(wǎng)通的距離”(笑)如果應(yīng)用是建立在中國(guó)的,就要考慮電信用戶(hù)和網(wǎng)通用戶(hù)訪(fǎng)問(wèn)網(wǎng)站的速度應(yīng)該都比較快才可以。這時(shí)候的解決方案可能有多種,比如采用CDN(Content Delivery Network內(nèi)容分發(fā)網(wǎng)絡(luò))使得網(wǎng)站的內(nèi)容發(fā)布到離用戶(hù)最近的服務(wù)器,又可以采用把服務(wù)器放在一些所謂的雙線(xiàn)機(jī)房中,甚至將幾種方案結(jié)合起來(lái)使用。這些都統(tǒng)統(tǒng)歸到網(wǎng)絡(luò)知識(shí)中。做為公司的架構(gòu)師,要對(duì)這些知識(shí)都有所了解,才有助于在遇到問(wèn)題時(shí)找到最佳答案。
硬件知識(shí)
了解硬件的極限,是架構(gòu)師的基本功。我見(jiàn)過(guò)一些人,他們的眼中軟件硬件都是沒(méi)有極限的,需要資源就申請(qǐng),系統(tǒng)性能下降了就買(mǎi)更高級(jí)的設(shè)備。然而,硬件的性能有很大一部分取決于I/O設(shè)備。而這些I/O設(shè)備依靠的都是機(jī)械物理運(yùn)動(dòng),這種運(yùn)動(dòng)是有極限的。因此當(dāng)資源訪(fǎng)問(wèn)量增大到一定的程度時(shí),這種物理運(yùn)動(dòng)將成為瓶頸。比如說(shuō),在開(kāi)發(fā)網(wǎng)站的過(guò)程中,記錄訪(fǎng)客的狀態(tài)是一件很重要的事情,一般來(lái)說(shuō)可以使用HttpSession來(lái)記錄。而HttpSession的存儲(chǔ)問(wèn)題將是一個(gè)很大的挑戰(zhàn),尤其是多機(jī)共享Session時(shí),將HttpSession存成文件并通過(guò)多機(jī)共享或網(wǎng)絡(luò)備份的方式來(lái)解決分布式的問(wèn)題是常用的方案,然而,架構(gòu)師必須考慮到這種方案是有I/O極限限制的,很難擴(kuò)展到超過(guò)一定規(guī)模的大型網(wǎng)絡(luò)。同時(shí),架構(gòu)師應(yīng)該了解目前最近的硬件發(fā)展是否對(duì)軟件系統(tǒng)會(huì)造成一定的影響,比如在多核的條件下是否對(duì)軟件編程有新的要求,是否會(huì)對(duì)運(yùn)行在虛擬機(jī)和非虛擬機(jī)上的程序有影響等等。
軟件知識(shí)
軟件知識(shí)所包含的范圍就更加廣泛了。對(duì)于互聯(lián)網(wǎng)行業(yè)來(lái)講,架構(gòu)師要了解操作系統(tǒng),數(shù)據(jù)庫(kù),應(yīng)用服務(wù)器等各方面的知識(shí)。比如說(shuō),如果網(wǎng)站使用的操作系統(tǒng)是 Linux,就要了解這個(gè)Linux版本的性能與局限性,比如說(shuō)最多可以存放的單個(gè)文件為多大。有的數(shù)據(jù)庫(kù)的數(shù)據(jù)是以單個(gè)文件來(lái)存放的,雖然我們很少見(jiàn)到數(shù)據(jù)庫(kù)中的數(shù)據(jù)多到不能再放入一條記錄的情況,但是作為架構(gòu)師,請(qǐng)時(shí)刻注意,這種可能性是有的。而且如果你有幸在一家高速成長(zhǎng)的互聯(lián)網(wǎng)企業(yè)中,而你所負(fù)責(zé)的應(yīng)用又沒(méi)有經(jīng)過(guò)優(yōu)化的話(huà),可能你會(huì)很快見(jiàn)到這種現(xiàn)象。這種現(xiàn)象的發(fā)生可能是由于操作系統(tǒng)不支持大文件的原因,也可能是數(shù)據(jù)庫(kù)不支持大文件。不論如何,架構(gòu)師應(yīng)該在這種現(xiàn)象發(fā)生之前就把一切都準(zhǔn)備好。對(duì)數(shù)據(jù)庫(kù)中表的拆分是架構(gòu)師應(yīng)該遇到的另外一個(gè)困難。一般來(lái)說(shuō)增加應(yīng)用服務(wù)器比較簡(jiǎn)單而增加數(shù)據(jù)庫(kù)服務(wù)器則是比較復(fù)雜的問(wèn)題,如果一個(gè)站點(diǎn)由多個(gè)數(shù)據(jù)庫(kù)支持,架構(gòu)師需要考慮如何在保證數(shù)據(jù)一致的情況下,讓多個(gè)數(shù)據(jù)庫(kù)分擔(dān)壓力。有些解決方案是將數(shù)據(jù)庫(kù)的讀寫(xiě)分開(kāi),使得大多數(shù)的查詢(xún)sql不經(jīng)過(guò)核心數(shù)據(jù)庫(kù),而只是訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的副本,但事實(shí)上,這種方式也只能維護(hù)規(guī)模不大的網(wǎng)站。對(duì)于大型的網(wǎng)站來(lái)說(shuō),把業(yè)務(wù)分散到不同的數(shù)據(jù)庫(kù)中,只共享必要的數(shù)據(jù),才是合理的提高網(wǎng)站擴(kuò)展性的解決方案。
其他知識(shí)
作為系統(tǒng)架構(gòu)師,可能還需要對(duì)分布式系統(tǒng),負(fù)載均衡,網(wǎng)絡(luò)安全,數(shù)據(jù)監(jiān)控等等各方面都有所了解。不僅僅是了解理論知識(shí),也要對(duì)相關(guān)的產(chǎn)品和業(yè)界進(jìn)展有一定的認(rèn)識(shí)。比如說(shuō)做負(fù)載均衡最好的產(chǎn)品是那種。目前最常用的備份策略是什么,有什么缺點(diǎn)。如何使用緩存,如何做好日志分析等等。
剛剛談到的是架構(gòu)師需要掌握的知識(shí),然而,冰凍三尺非一日之寒。這個(gè)過(guò)程需要我們慢慢的積累。如果你已經(jīng)進(jìn)入到公司進(jìn)行軟件開(kāi)發(fā),請(qǐng)時(shí)刻關(guān)注你所開(kāi)發(fā)軟件的性能與可擴(kuò)展性,而不僅僅局限在功能上,時(shí)刻想著任何一個(gè)簡(jiǎn)單的問(wèn)題:我開(kāi)發(fā)的模塊如果放在多人并發(fā)的環(huán)境下會(huì)怎樣,慢慢的就會(huì)有所心得。如果你還是一個(gè)在校學(xué)生,不要想著自己離架構(gòu)師這個(gè)職位還很遙遠(yuǎn)。要知道,成為架構(gòu)師的修煉之路是很長(zhǎng)的,甚至可以說(shuō)是終身的,因此早點(diǎn)進(jìn)入學(xué)習(xí)狀態(tài),不斷修煉自己。在學(xué)校期間學(xué)好離散數(shù)學(xué),數(shù)據(jù)結(jié)構(gòu),操作系統(tǒng),編譯原理,體系結(jié)構(gòu),數(shù)據(jù)庫(kù)原理等關(guān)鍵課程,并積極尋找機(jī)會(huì)到外面實(shí)習(xí),增長(zhǎng)自己的工作經(jīng)驗(yàn)。如果有機(jī)會(huì)去到一些技術(shù)主導(dǎo)的公司中工作,就一定不要放棄這種機(jī)會(huì),慢慢就會(huì)成長(zhǎng)起來(lái)。最重要的,你會(huì)養(yǎng)成關(guān)注技術(shù),勤于思考的好習(xí)慣。當(dāng)有一天你發(fā)現(xiàn)自己對(duì)任何技術(shù)難題都可以一眼看到其本質(zhì),并能夠?qū)⑵浞纸鉃橐粋€(gè)個(gè)可輕松解決的模塊,你會(huì)由衷的感覺(jué)到知識(shí)給你帶來(lái)的快樂(lè),或許那一天,你已經(jīng)是一個(gè)架構(gòu)師了。