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