新聞中心
【獨(dú)家特稿】在訪問(wèn)聚聚呀項(xiàng)目總監(jiān)梁遠(yuǎn)華先生時(shí),梁先生說(shuō)到“權(quán)衡取舍”是一個(gè)架構(gòu)師在項(xiàng)目中最難把握的?!耙粋€(gè)產(chǎn)品會(huì)有很多的東西要做,什么是可做的,什么是重要的,什么是將來(lái)能做的,每天都做做選擇題?!?/p>

創(chuàng)新互聯(lián)建站是專(zhuān)業(yè)的萍鄉(xiāng)網(wǎng)站建設(shè)公司,萍鄉(xiāng)接單;提供網(wǎng)站設(shè)計(jì)、成都網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專(zhuān)業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行萍鄉(xiāng)網(wǎng)站開(kāi)發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專(zhuān)業(yè)做搜索引擎喜愛(ài)的網(wǎng)站,專(zhuān)業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來(lái)合作!
開(kāi)發(fā)頻道年終巨獻(xiàn):架構(gòu)師最怕程序員知道的十件事
eBay的杰出架構(gòu)師Randy Shoup先生也表示“對(duì)權(quán)衡取舍方面有著出色的把控能力”是自己團(tuán)隊(duì)招聘架構(gòu)師的一個(gè)重要要求。
你聽(tīng)說(shuō)過(guò)軟件架構(gòu)師的職業(yè)培訓(xùn)中有一個(gè)叫做ATAM的課程么?ATAM,全稱(chēng)Architecture Tradeoff Analysis Method,意為架構(gòu)權(quán)衡分析方法。雖然這樣的培訓(xùn)并非必要,但是值得我們?nèi)W(xué)習(xí)了解一下。
ATAM概念流程圖
沒(méi)有一個(gè)人可以建造一個(gè)沒(méi)有缺陷的架構(gòu)。這個(gè)項(xiàng)目可能缺乏時(shí)間,缺乏金錢(qián),缺乏人手,或者缺乏合適的技術(shù)。在項(xiàng)目從開(kāi)始到進(jìn)行中的每時(shí)每刻,架構(gòu)師都需要對(duì)這些架構(gòu)的“缺陷”有明確的了解。
在架構(gòu)師的藝術(shù)氣質(zhì)篇我們提到了“基于需求考慮問(wèn)題”和“基于系統(tǒng)考慮問(wèn)題”的不同,并提到這中間會(huì)存在一些矛盾,需要架構(gòu)師來(lái)做權(quán)衡決策。站在系統(tǒng)的角度上,架構(gòu)師可能覺(jué)得自己手頭的資源不夠,他需要更多的時(shí)間、人以及新技術(shù),但是項(xiàng)目經(jīng)理和其他團(tuán)隊(duì)成員很可能會(huì)拒絕,而他們也有自己的理由。
所以Fred George先生提出了“短期濫用”的說(shuō)法,即在系統(tǒng)能夠承受的范圍內(nèi)做出一些妥協(xié)。在ATAM方法中,分析的思路是基于“情景”的:你需要提出各種可能的情景,然后來(lái)證明在每一個(gè)用戶使用場(chǎng)景中,系統(tǒng)的哪一些內(nèi)容是必要的、不可丟棄的——從而確定哪些部分是暫時(shí)可以不予考慮的。
到了這一步,便已經(jīng)是一個(gè)技術(shù)性問(wèn)題;但是這個(gè)問(wèn)題的解決過(guò)程卻是對(duì)架構(gòu)師“軟”技能的一個(gè)考驗(yàn):即架構(gòu)師有沒(méi)有看到各方面訴求的差異,以及有沒(méi)有意愿為了這些差異而做出妥協(xié)。
案例分析1
讓我們看一個(gè)案例,這是現(xiàn)任微軟Visual Studio Business Applications總經(jīng)理潘正磊女士在博客上分享的一段經(jīng)歷:
“分享一件去年發(fā)生在上海Visual Studio團(tuán)隊(duì)和印度SQL Server團(tuán)隊(duì)之間的故事。兩個(gè)團(tuán)隊(duì)郵件往來(lái)10個(gè)回合后仍無(wú)法在某個(gè)問(wèn)題上達(dá)成一致,因此上海團(tuán)隊(duì)把我拉進(jìn)了郵件討論。于是我從頭開(kāi)始讀郵件,讀到第四封我大致了解到,分歧的根源在于,兩個(gè)團(tuán)隊(duì)所溝通的,根本不是同一件事。
印度團(tuán)隊(duì)認(rèn)為自己開(kāi)發(fā)了一個(gè)特別棒的SQL Compact工具,能滿足客戶的重要需求,所以要求把這個(gè)功能加入Visual Studio 2010 Beta 1 (Visual Studio 2010 的第一個(gè)公開(kāi)測(cè)試版);上海團(tuán)隊(duì)認(rèn)為當(dāng)時(shí)已接近測(cè)試版的發(fā)布日期,考慮到功能加入產(chǎn)品前必須遵循的一系列發(fā)布流程,時(shí)間上恐怕來(lái)不及了。之后的郵件里,印度團(tuán)隊(duì)一直強(qiáng)調(diào)這個(gè)功能是多么棒,應(yīng)該讓它在測(cè)試版中發(fā)布(也就是一個(gè)解決方案),卻從沒(méi)有解釋他們要解決什么問(wèn)題;上海團(tuán)隊(duì)則不斷重申功能加入必須按流程來(lái),可見(jiàn)他們之間的交流完全錯(cuò)位了。在這個(gè)典型的案例中,印度團(tuán)隊(duì)努力推動(dòng)一個(gè)解決方案,卻沒(méi)有想清楚所要解決的問(wèn)題為什么會(huì)對(duì)上海團(tuán)隊(duì)也非常重要。之后,我們發(fā)現(xiàn)的確有一個(gè)用戶使用場(chǎng)景需要用到SQL Compact工具,于是我們?cè)儐?wèn)新工具對(duì)這個(gè)使用場(chǎng)景有何幫助,是否能與其他新功能兼容 … …一旦我們能明確這個(gè)問(wèn)題的本質(zhì),我們就不難找出雙方都接受的解決方案,例如,立即加入第一個(gè)測(cè)試版,或稍后加入第二個(gè)測(cè)試版,甚至是加入Service Pack等等?!?/p>
如果說(shuō)架構(gòu)師的藝術(shù)氣質(zhì)體現(xiàn)在其把系統(tǒng)當(dāng)做生命、站在系統(tǒng)本身的角度思考問(wèn)題,那么架構(gòu)師出于對(duì)客戶、項(xiàng)目經(jīng)理、開(kāi)發(fā)者和測(cè)試者不同視角的理解而做出權(quán)衡妥協(xié)則充分體現(xiàn)了其職業(yè)性。上面潘女士提到的案例,是一個(gè)大型項(xiàng)目中的兩個(gè)開(kāi)發(fā)團(tuán)隊(duì)之間的理解沖突所引起的。
A:一個(gè)特別棒的功能應(yīng)該被加入到產(chǎn)品發(fā)布中。
B:一個(gè)功能加入到產(chǎn)品發(fā)布中應(yīng)該要謹(jǐn)慎并經(jīng)過(guò)充分的審核。
這是“把一個(gè)功能加入到產(chǎn)品發(fā)布”從兩個(gè)角度的解讀,兩個(gè)解讀都有自己的道理。而在潘女士參與之前,雙方的論點(diǎn)沒(méi)有交集,“交流錯(cuò)位”了。而要實(shí)現(xiàn)權(quán)衡與妥協(xié)的前提,則是讓B了解“這個(gè)功能是很棒”,并且讓A了解“新功能必須在謹(jǐn)慎考量之后才能加入產(chǎn)品發(fā)布”。在潘女士的努力下,雙方最后都理解了對(duì)方,并找到了都能接受的解決方案。而這個(gè)過(guò)程正是通過(guò)設(shè)計(jì)和描述“場(chǎng)景(scenario)”來(lái)推動(dòng)的。
案例分析2
上面是開(kāi)發(fā)工具項(xiàng)目中的一個(gè)小案例,下面讓我們看看另一個(gè)案例。Amazon.com的CTO,Werner Vogels在08年的12月底發(fā)過(guò)一篇很有參考價(jià)值的博文:Eventually Consistent(最終一致),討論對(duì)象是Amazon的S3,SimpleDB,EC2等大型云計(jì)算服務(wù)。Werner對(duì)這些服務(wù)的描述直達(dá)本質(zhì),一針見(jiàn)血:“這些服務(wù)需要在安全、伸縮性、可用性、性能以及性?xún)r(jià)比方面獲得高分,同時(shí)必須維持全球上百位客戶不間斷的使用需求?!?/p>
文中講述了不少深入的架構(gòu)知識(shí),對(duì)于廣大程序員而言或許有些難以理解;但是有一句話是一句很直白的經(jīng)驗(yàn)總結(jié),充分的解釋了“權(quán)衡妥協(xié)”的意思:“在一個(gè)理想的世界中,只存在唯一一個(gè)一致模型:在實(shí)施一次升級(jí)之后,所有觀察者都能夠看到這個(gè)升級(jí)?!毖酝庵饩褪?,對(duì)于系統(tǒng)而言,在某一個(gè)地方或某一個(gè)層面發(fā)生的改變,勢(shì)必將影響到系統(tǒng)的其他地方和層面,乃至整個(gè)系統(tǒng)。正因?yàn)橄到y(tǒng)的各個(gè)部分是互相關(guān)聯(lián)的,因此為每一個(gè)變動(dòng)考慮權(quán)衡(trade-off)是必要的,有意義的。
Werner提到的一個(gè)正面案例就是在90年代中期的時(shí)候,人們只知道可用性(availability)很重要,但對(duì)于追求可用性需要犧牲什么渾然不知。出于對(duì)可用性權(quán)衡的研究,加州大學(xué)的Eric Brewer教授提出了CAP理論,認(rèn)為對(duì)于一個(gè)共享數(shù)據(jù)的系統(tǒng)而言,數(shù)據(jù)持續(xù)性、系統(tǒng)可用性、對(duì)網(wǎng)絡(luò)劃分的耐受性這三個(gè)屬性(property)是不可調(diào)和的,任何時(shí)候只能同時(shí)達(dá)成兩個(gè)。
雖然理論只是理論,但理論并非憑空而來(lái),Eric的理論是總結(jié)了90年代大型互聯(lián)網(wǎng)系統(tǒng)建設(shè)的經(jīng)驗(yàn)研究成果。對(duì)于Amazon云計(jì)算服務(wù)的架構(gòu)師而言,這些經(jīng)驗(yàn)總結(jié)自然是無(wú)法忽視的;在知道了魚(yú)和熊掌不可兼得的情況下,要深刻理解各個(gè)方面不同角度的訴求,并找出各方都可以接受妥協(xié)的制衡點(diǎn),自然是必不可少的。
總結(jié)
#T#具體要如何制衡是一個(gè)很大的話題,甚至于每個(gè)系統(tǒng)都會(huì)有不同的情況。很多人在各個(gè)方面都做過(guò)很多研究,指導(dǎo)架構(gòu)師們一些方向。對(duì)于架構(gòu)師而言,僅僅有權(quán)衡妥協(xié)的意識(shí)還遠(yuǎn)遠(yuǎn)不夠:這個(gè)意識(shí)只是前提之一,如果缺乏了對(duì)技術(shù)扎實(shí)的了解,那么這個(gè)意識(shí)則毫無(wú)意義。同時(shí)在分析權(quán)衡的過(guò)程中會(huì)有很多抽象的概念(這些概念可能還需要被量化),并且深入到系統(tǒng)的各個(gè)層面,因此架構(gòu)師的抽象思維能力和看到問(wèn)題本質(zhì)的素質(zhì)也是必須的。
抽象能力,深入本質(zhì),權(quán)衡意識(shí)——這三點(diǎn)都是十分珍貴的思想素質(zhì)。這三種能力配合豐富而扎實(shí)的“硬”技能(技術(shù))、合格的“軟”技能(溝通)以及敏銳的眼光,無(wú)論在哪個(gè)行業(yè)都能成功。而由于架構(gòu)師這個(gè)職業(yè)本身就是IT界的高級(jí)職業(yè),這所有的能力和素質(zhì)就都成了架構(gòu)師的入門(mén)必備敲門(mén)磚。不過(guò)每個(gè)人的時(shí)間、精力以及天生素質(zhì)都是不同的,本次介紹的架構(gòu)師十大技能全部修煉是很困難的。想要成為架構(gòu)師的程序員們,首先要自己權(quán)衡決策一下,看看自己應(yīng)該如何修煉才能達(dá)到最好的效果——這也是權(quán)衡能力的一次練習(xí)吧。
本文為《架構(gòu)師害怕程序員知道的十項(xiàng)技能》中的權(quán)衡取舍篇。
分享名稱(chēng):架構(gòu)師:每天要在魚(yú)和熊掌之間做選擇
文章出自:http://m.5511xx.com/article/dhicede.html


咨詢(xún)
建站咨詢(xún)
