對(duì)于每一個(gè)軟件開發(fā)人員,架構(gòu)師都是一個(gè)令人向往的角色,它是能力與高薪的代名詞。就連軟件行業(yè)的傳奇比爾蓋茨在2000年卸任公司CEO時(shí),也擔(dān)任了微軟公司的榮譽(yù)角色“首席軟件架構(gòu)師”,可見“架構(gòu)師”這一稱謂的吸引力。
而架構(gòu)師也絕非簡(jiǎn)單寫寫代碼就能當(dāng)上的,它需要從業(yè)經(jīng)驗(yàn)的積累和技術(shù)知識(shí)的融會(huì)。架構(gòu)師成為目前很多軟件企業(yè)急需的人才,特別是對(duì)一些大型軟件產(chǎn)品和項(xiàng)目的開發(fā),這一角色顯得更為關(guān)鍵。
由于缺乏好的軟件架構(gòu)師導(dǎo)致項(xiàng)目失敗的例子不勝枚舉。如何才能成為一名合格的、進(jìn)而成為一名優(yōu)秀的軟件架構(gòu)師呢?ITPUB借SOA標(biāo)準(zhǔn)研討會(huì)之機(jī)采訪了Tibco資深架構(gòu)師林偉炎先生,請(qǐng)他談?wù)剬?duì)于軟件架構(gòu)和軟件架構(gòu)師的認(rèn)識(shí),談?wù)勈裁床攀且粋€(gè)成功的架構(gòu),如何避免一個(gè)失敗的架構(gòu),以及真正的軟件架構(gòu)師是怎樣煉成的。
ITPUB: 首先請(qǐng)您介紹一下自己,您的經(jīng)歷、專長(zhǎng)、目前的研究領(lǐng)域。
林偉炎:我在IT行業(yè)已經(jīng)有十多年的經(jīng)驗(yàn)。從程序員,系統(tǒng)分析,開發(fā)組長(zhǎng),到架構(gòu)師,享受過(guò)軟件開發(fā)的甜酸苦辣(哈!還是甜的比較多)。作為顧問(wèn)的角色幫助客戶進(jìn)行系統(tǒng)架構(gòu)也已經(jīng)有超過(guò)七年的時(shí)間。不能算是專長(zhǎng)吧,只是近兩年接觸的項(xiàng)目都與SOA有關(guān),對(duì)于SOA,尤其是治理的領(lǐng)域總算有些體會(huì)。
ITPUB:因?yàn)榧軜?gòu)師職業(yè)的特殊性,他需要與用戶、業(yè)務(wù)人員、技術(shù)人員等多方交流,因此溝通能力是重要且必須的。但是對(duì)于大多數(shù)程序員來(lái)說(shuō),他們似乎更擅長(zhǎng)與機(jī)器對(duì)話,而不是與人交流。您如何看待這個(gè)難題呢?
林偉炎:事實(shí)上,剛開始的時(shí)候,我是很怕作顧問(wèn)的,因?yàn)槌36家佑|新的客戶,新的問(wèn)題,新的挑戰(zhàn)。但時(shí)間久了,就開始領(lǐng)略作顧問(wèn)的好處。那就是可以多聽,多看,多接觸,不斷豐富自己的經(jīng)驗(yàn)。
ITPUB:作為一名資深架構(gòu)師,請(qǐng)談?wù)勀鷮?duì)架構(gòu)的認(rèn)識(shí)。
林偉炎:架構(gòu)這個(gè)詞這幾年可能用得比較濫。好像什么都是架構(gòu)。我們常聽到的有電腦架構(gòu)(硬件),應(yīng)用架構(gòu),集成架構(gòu),企業(yè)信息架構(gòu)等。因此,要為架構(gòu)下一個(gè)定義可能很難,但也許并沒有必要。大部分的人說(shuō)架構(gòu)的時(shí)候,他們都是指向整體的設(shè)計(jì)方向,部件之間的關(guān)系,信息在部件間的流動(dòng)等,都是考慮整體性,追求一致性,方向與原則。然而,這一切的背后,最重要的還是你的架構(gòu)到底要解決什么樣的問(wèn)題。
我親眼看過(guò)很多架構(gòu)師他們規(guī)劃架構(gòu)的時(shí)候,只是把業(yè)界最炫耀的東西放在一起。比如說(shuō)現(xiàn)在流行Web Service,就干脆什么都用Web Service來(lái)連接吧。什么?Web  Service不支持事務(wù)嗎?那就不要事務(wù)吧。Web  Service傳送效率低嗎?那就要用戶多等一會(huì)吧!這樣做就是本末倒置,所有架構(gòu)背后的真義,就是要解決用戶的問(wèn)題。在企業(yè)的環(huán)境里面,這就是解決業(yè)務(wù)的問(wèn)題。要選擇、設(shè)計(jì)一個(gè)架構(gòu)的時(shí)候,這個(gè)是唯一要緊的問(wèn)題。
ITPUB:那么您認(rèn)為一個(gè)成功的架構(gòu)應(yīng)該具有哪些特征呢?要如何避免一個(gè)失敗的架構(gòu)呢?
林偉炎:在過(guò)去幾十年間,市場(chǎng)上出現(xiàn)了很多不同的架構(gòu),其中SOA是最炙手可熱的。將IT基礎(chǔ)設(shè)施應(yīng)用到混亂的真實(shí)世界向來(lái)都是非常有挑戰(zhàn)性的,講求未來(lái)概念的架構(gòu)似乎更難以掌握。因此,我認(rèn)為成功的架構(gòu),應(yīng)該能夠讓企業(yè)快速回應(yīng)現(xiàn)實(shí)世界,能夠應(yīng)付意料之外的事件,也可以幫助企業(yè)更進(jìn)一步預(yù)測(cè)和對(duì)應(yīng)有可能出現(xiàn)的機(jī)遇及危機(jī)。
這個(gè)架構(gòu)為現(xiàn)實(shí)世界的挑戰(zhàn)提供了答案,從數(shù)據(jù)描述的方法與準(zhǔn)確性,到影響IT狀況(包括機(jī)構(gòu)內(nèi)外)的數(shù)據(jù)異質(zhì)性,以至為決策者及與業(yè)務(wù)有關(guān)人士而設(shè),最終希望能讓IT支持人員工作更為輕松的信息展示方法。
成功的架構(gòu)必須明白現(xiàn)實(shí)世界的問(wèn)題,及擁有不一致主數(shù)據(jù)的成本,并提供確保機(jī)構(gòu)內(nèi)有數(shù)據(jù)一致性的方法。這個(gè)服務(wù)為本的方法,充許多類型IT資產(chǎn)可以更快速重新配置,來(lái)對(duì)應(yīng)場(chǎng)需、法規(guī)和更快的業(yè)務(wù)改變。架構(gòu)的事件處理能力,讓企業(yè)能夠在機(jī)會(huì)和問(wèn)題發(fā)生之前做出預(yù)測(cè)和對(duì)應(yīng)。另外,這個(gè)架構(gòu)可以將該事件處理能力應(yīng)用到自已上,按服務(wù)水平協(xié)議監(jiān)控和主動(dòng)管理架構(gòu)的健康與績(jī)效。在基于Ajax的前端,商業(yè)智能工具采用與業(yè)務(wù)相關(guān)人士能夠輕松了解的形式提供信息。
這個(gè)架構(gòu)的美好在于它真的存在。
所以,一個(gè)成功的架構(gòu),就是一個(gè)可以解決用戶需求(包括功能和非功能)的架構(gòu)。當(dāng)然,還要考慮到可行性與擴(kuò)展性。其中,擴(kuò)展性又是最容易出問(wèn)題及最困難的地方。要做到容易擴(kuò)展,你就要知道,或者預(yù)測(cè)到將來(lái)用戶需求的變更方向。如果架構(gòu)師只著重技術(shù)的話,要做到這點(diǎn)真的是非常困難。所以從企業(yè)架構(gòu)師的角度來(lái)看,他不但要對(duì)企業(yè)的業(yè)務(wù)非常了解,也必須要了解未來(lái)幾年業(yè)務(wù)發(fā)展的方向。SOA的流行事實(shí)上就給了我們一個(gè)機(jī)會(huì)去想清楚IT跟業(yè)務(wù)部門的關(guān)系,IT到底只是一個(gè)一味追趕業(yè)務(wù)需求的部門,還是一個(gè)業(yè)務(wù)上的拍檔,彼此互相影響,這將影響到整個(gè)企業(yè)信息架構(gòu)的成功。ITPUB:您多次談到SOA,那么SOA對(duì)于系統(tǒng)架構(gòu)的意義和影響何在?在您的理解中,SOA架構(gòu)的本質(zhì)是什么?
林偉炎:SOA對(duì)系統(tǒng)架構(gòu)的意義極為深遠(yuǎn),從解決單一問(wèn)題,到解決整個(gè)企業(yè)的問(wèn)題。從以部件為主,到以企業(yè)服務(wù)為主,牽涉到設(shè)計(jì)思路的改變。也許需求更多的投入在溝通,規(guī)劃,設(shè)計(jì),基建與組織治理方面。
很多人說(shuō)服務(wù)的本質(zhì)就是重用。這種看法不錯(cuò),但拿捏不到重點(diǎn)。服務(wù)導(dǎo)向的本質(zhì)應(yīng)該是更緊密的IT-業(yè)務(wù)的關(guān)聯(lián),更高的服務(wù)抽象層次,更強(qiáng)的IT治理,最終達(dá)到業(yè)務(wù)的敏捷性。能達(dá)到最后這點(diǎn),才是一個(gè)真正的面向服務(wù)架構(gòu)(SOA)。
ITPUB:目前,您或所在團(tuán)隊(duì)是如何開展軟件架構(gòu)設(shè)計(jì)工作的?在使用什么產(chǎn)品或者方法呢?
林偉炎:要進(jìn)行軟件架構(gòu)設(shè)計(jì)并不特別需要什么工具,最重要倒是溝通。溝通是為了兩個(gè)原因。第一個(gè)是對(duì)需求的理解,第二個(gè)是把你的設(shè)計(jì)作推廣,缺一不可。
第一點(diǎn)比較容易理解,正如前面說(shuō)過(guò),不清楚需求是不可能設(shè)計(jì)出成功的架構(gòu)。第二點(diǎn)則比較容易忽略。老實(shí)說(shuō),一個(gè)企業(yè)架構(gòu)的成功與否就是要看到底這個(gè)架構(gòu)能否落地,個(gè)別部門的項(xiàng)目組是否跟從。所以作為架構(gòu)師,一定要多聽,多溝通。
在架構(gòu)的規(guī)劃及設(shè)計(jì)階段,我發(fā)現(xiàn)最有用的工具是工作坊,就是為了一個(gè)特定的目的而把不同部門的人聚集起來(lái)一同討論,讓每個(gè)受影響的部門都可以充分發(fā)表意見。架構(gòu)師作為facilitator,必需要有良好的溝通技巧,敏銳的觸覺,以及包容和正面的態(tài)度。國(guó)內(nèi)跟國(guó)外的架構(gòu)設(shè)計(jì)不存在很大的技術(shù)差異,只是國(guó)內(nèi)搞技術(shù)的人都太注重技術(shù),一般忽略了對(duì)業(yè)務(wù)的關(guān)注,對(duì)治理及溝通的重視。
ITPUB:剛才您提到了Ajax。在今年的JaveOne會(huì)議上,Tibco公司也宣布Ajax消息服務(wù)(AMS)計(jì)劃,能否詳細(xì)介紹什么是AMS,AMS在SOA架構(gòu)中將起到怎樣的作用,以及AMS與ESB的異同?
林偉炎:我們認(rèn)為SOA與Ajax會(huì)產(chǎn)生最完美的協(xié)同效應(yīng)。兩者獨(dú)立演進(jìn),但也能同時(shí)善用各自的長(zhǎng)處。典型的Ajax應(yīng)用與HTTP服務(wù)聯(lián)系,并只會(huì)傳送HTML標(biāo)記或者只是數(shù)據(jù)的信息,然后在用戶端轉(zhuǎn)化為可供閱讀的信息。至于企業(yè)服務(wù)管道 (ESB) 則是以JMS,或以Rendezvous,或者M(jìn)Q為基礎(chǔ),按不同的供應(yīng)商而定,來(lái)實(shí)時(shí)移動(dòng)數(shù)據(jù)。Ajax Message Server的功用就是連接這兩個(gè)世界。
另外一個(gè)ESB的問(wèn)題就是,它只是消防喉,而不是自來(lái)水龍頭。所以你需要把所有時(shí)刻改變且大量的即時(shí)數(shù)據(jù)過(guò)濾,令它們變成人能夠接收了解的信息。這也正是AMS所能夠做到的。它其實(shí)是一個(gè)服務(wù)器,能夠連接服務(wù)器及客戶端,以建立一個(gè)即時(shí)的HTTP連接,然后作多路傳輸、過(guò)濾信息,還會(huì)根據(jù)用戶應(yīng)用情況來(lái)控制流量。AMS能夠優(yōu)化由服務(wù)器端流向用戶端的即時(shí)串流信息。
ITPUB:最后,請(qǐng)對(duì)有志于軟件架構(gòu)發(fā)展的讀者談?wù)?,您認(rèn)為對(duì)于一個(gè)架構(gòu)師,最大的挑戰(zhàn)是什么?應(yīng)該如何面對(duì)呢?
林偉炎:作為一個(gè)架構(gòu)師,最大的挑戰(zhàn)就是要放下自己,不能假設(shè)自己什么都懂,要多聽,多看,多想,多包容。不能只顧技術(shù),也要發(fā)展溝通、帶領(lǐng)團(tuán)隊(duì),以及處理人事關(guān)系的技巧。技術(shù)只能幫你成為一個(gè)技工,而架構(gòu)師,就要看你的Soft Skill了。
感謝林偉炎先生的精彩回答,讓我們?cè)谙蚣軜?gòu)師的征途上又邁進(jìn)了一步。也請(qǐng)繼續(xù)關(guān)注我們的架構(gòu)師訪談系列。

分享到

wangziyi

相關(guān)推薦