<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Terry.Li-彬

    虛其心,可解天下之問(wèn);專其心,可治天下之學(xué);靜其心,可悟天下之理;恒其心,可成天下之業(yè)。

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      143 隨筆 :: 344 文章 :: 130 評(píng)論 :: 0 Trackbacks

    程立談架構(gòu)、敏捷和SOA實(shí)踐

    作者 霍泰穩(wěn) 發(fā)布于 2008年7月17日 上午1時(shí)43分

    社區(qū)
    Architecture,
    Agile,
    SOA
    主題
    SOA平臺(tái),
    企業(yè)級(jí)敏捷
    標(biāo)簽
    SOA實(shí)施

    據(jù)支付寶公司官 方數(shù)據(jù),截止到2008年5月6日,使用支付寶的全球用戶已經(jīng)超過(guò)8000萬(wàn),支付寶每日交易總額超過(guò)3.5億人民幣,日交易筆數(shù)超過(guò)150萬(wàn)筆。看到這 兒,我想很多軟件開發(fā)者朋友可能會(huì)問(wèn)的問(wèn)題是:這么龐大的支付平臺(tái)是誰(shuí)設(shè)計(jì)的,如何設(shè)計(jì)的,有什么經(jīng)驗(yàn)和教訓(xùn)?在2008年5月份阿里巴巴舉辦的第二屆網(wǎng) 絡(luò)工程師俠客行大會(huì)上,InfoQ中文站有幸認(rèn)識(shí)了支付寶首席架構(gòu)師程立先生,并邀請(qǐng)其分享了軟件架構(gòu)設(shè)計(jì)心得,對(duì)當(dāng)前熱門技術(shù)的看法,以及在自己團(tuán)隊(duì)中 對(duì)這些熱門技術(shù)的實(shí)踐經(jīng)驗(yàn)等。

    相關(guān)廠商內(nèi)容

    敏捷名師講堂之Kent Beck——響應(yīng)式設(shè)計(jì)(9月10日)

    敏捷宣言創(chuàng)始人Dave Thomas演講:程序員修煉之道,十年之后

    相關(guān)贊助商

    極限編程創(chuàng)始人Kent Beck,敏捷宣言創(chuàng)始人Dave Thomas,國(guó)際敏捷權(quán)威專家Fred George、Dave Nicolette以及國(guó)內(nèi)知名公司專家分享“實(shí)效敏捷”。現(xiàn)在報(bào)名

    InfoQ中文站:請(qǐng)給InfoQ中文站的讀者介紹一下您自己。

    程立:InfoQ中文站的讀者,大家好,我叫程立,來(lái)自支付寶架構(gòu)團(tuán)隊(duì)。和大家一樣,我也是InfoQ的忠實(shí)讀 者。從2004年起,我開始參與淘寶網(wǎng)與支付寶系統(tǒng)的建設(shè),并于2005年正式加入支付寶,此后一直從事支付寶系統(tǒng)的研發(fā)工作。現(xiàn)階段,我的興趣在于適合 電子支付行業(yè)的敏捷、高可用、可伸縮的面向服務(wù)架構(gòu)與開放架構(gòu)。非常高興InfoQ中文站提供了這樣的機(jī)會(huì),讓我能夠代表支付寶的工程技術(shù)人員和大家進(jìn)行 交流,希望這樣的交流能增進(jìn)我們的相互了解。

    InfoQ中文站:支付寶技術(shù)架構(gòu)的發(fā)展過(guò)程是什么樣的?

    程立:三年多前的支付寶系統(tǒng)只有一個(gè)應(yīng)用程序,而今天,僅僅在你點(diǎn)擊支付寶支付按鈕的一瞬間,取決于你選擇支付 方式,很可能調(diào)動(dòng)了數(shù)十個(gè)獨(dú)立的系統(tǒng)同時(shí)為你提供服務(wù):有的幫你聯(lián)系銀行,有的幫你支付貨款,有的推進(jìn)你的交易,有的幫你聯(lián)系商家發(fā)貨,有的警惕地盯著這 一切,為這個(gè)過(guò)程保駕護(hù)航……支付寶系統(tǒng)從一個(gè)樸素的輕量級(jí)Java應(yīng)用程序,發(fā)展到現(xiàn)在由很多自主的服務(wù)系統(tǒng)構(gòu)成的全分布式系統(tǒng),是一個(gè)朝著明確的方 向、邁著小而快的步伐、與業(yè)務(wù)齊肩并進(jìn)的發(fā)展過(guò)程。這個(gè)過(guò)程大致分為兩個(gè)大的階段。

    第一階段是基于良好的業(yè)務(wù)邊界,將一根粗煙囪似的應(yīng)用程序拆成若干個(gè)細(xì)一些的煙囪。這種切分方式,可以使應(yīng)用程序間的通信盡量小,只有少量的頁(yè)面跳 轉(zhuǎn)與組合,以及基于JMS的異步消息交換。這種簡(jiǎn)單的分布就帶來(lái)一些相當(dāng)直接的好處,如單個(gè)系統(tǒng)的復(fù)雜性降低了,研發(fā)的并行度提高了,每個(gè)系統(tǒng)可以單獨(dú)進(jìn) 行伸縮。公共的業(yè)務(wù),比如賬務(wù)與交易的處理等,被實(shí)現(xiàn)成可共享的類庫(kù),打包在每一個(gè)應(yīng)用程序中,這樣,可以仍然使用單數(shù)據(jù)源上簡(jiǎn)單、低成本的本地事務(wù)來(lái)保 證業(yè)務(wù)處理所要求的原子性、一致性、隔離性與持久性。在這個(gè)階段,新業(yè)務(wù)只要是自成體系的,都盡量作為單獨(dú)的應(yīng)用程序?qū)崿F(xiàn)。

    在第二階段,為了使業(yè)務(wù)核心更加專業(yè)化,前端應(yīng)用能夠輕裝上陣,我們將原來(lái)類庫(kù)形式的業(yè)務(wù)核心一個(gè)接一個(gè)地拿出來(lái),做成了自主的服務(wù)系統(tǒng)。這是一個(gè) 充滿業(yè)務(wù)與技術(shù)挑戰(zhàn)的過(guò)程。僅從技術(shù)架構(gòu)上說(shuō),為了使服務(wù)能夠快速構(gòu)建、靈活擴(kuò)展,我們研發(fā)了組件式平臺(tái),使服務(wù)自身能夠通過(guò)插件式體系進(jìn)行靈活擴(kuò)展;為 了提供電子支付業(yè)務(wù)所要求的嚴(yán)格事務(wù)一致性、快速響應(yīng)與高并發(fā)處理能力,發(fā)展了分布式服務(wù)系統(tǒng)中事務(wù)協(xié)調(diào)技術(shù);我們也發(fā)展了企業(yè)服務(wù)總線技術(shù),以提供統(tǒng) 一、易于功能擴(kuò)展、滿足各種服務(wù)質(zhì)量要求與集成模式的服務(wù)通信機(jī)制。每個(gè)服務(wù)系統(tǒng)連同它操作的數(shù)據(jù)都是一個(gè)自主的業(yè)務(wù)單元、系統(tǒng)單元與研發(fā)單元,很好地支 持了業(yè)務(wù)模型創(chuàng)新、系統(tǒng)伸縮、研發(fā)組織小型化與專業(yè)化。

    總體說(shuō)來(lái),雖然發(fā)展速度較快,但支付寶的技術(shù)架構(gòu)仍然處于一個(gè)布局與打基礎(chǔ)的階段,對(duì)技術(shù)高度重視的態(tài)度,和緊緊抓住“服務(wù)”不放、持續(xù)小步快跑的 執(zhí)行策略,使我們?cè)谶@個(gè)階段打下了一個(gè)良好的發(fā)展基礎(chǔ)。面對(duì)前方業(yè)務(wù)發(fā)展的巨大空間,架構(gòu)與技術(shù)大有用武之地,在這里歡迎有志之士加入我們,共同開拓未 來(lái)。

    InfoQ中文站:請(qǐng)談一談您對(duì)架構(gòu)的認(rèn)識(shí)。

    程立:老子說(shuō)“道生一、一生二、二生三、三生萬(wàn)物”。在業(yè)務(wù)愿景的技術(shù)實(shí)現(xiàn)過(guò)程中,假設(shè)“道”為愿景、一為方 向、二為戰(zhàn)略的話,三就應(yīng)該是架構(gòu)了,架構(gòu)既出,萬(wàn)物化生可矣。戰(zhàn)略是整體的、長(zhǎng)期的,讓架構(gòu)直接承接戰(zhàn)略,帶來(lái)的最大好處是可以得到一個(gè)整體的可持續(xù)發(fā) 展的系統(tǒng)平臺(tái)。而如果只是讓架構(gòu)從屬于項(xiàng)目或者產(chǎn)品,很可能產(chǎn)生的系統(tǒng)也是煙囪型的,短視的。

    這是支付寶公司內(nèi)部對(duì)架構(gòu)的定位。作為技術(shù)人員,常常遇到的問(wèn)題是“提供一個(gè)X產(chǎn)品,它的流程為Y,高峰期處理量達(dá)到Z。”;也有一些問(wèn)題的提法有 所不同,比如“我們希望進(jìn)入X市場(chǎng),Y是我們的主要價(jià)值點(diǎn),這個(gè)市場(chǎng)未來(lái)三年可能有Z倍的增長(zhǎng),系統(tǒng)能幫我們做什么?”。在我所在的團(tuán)隊(duì)中,第二類問(wèn)題總 是由架構(gòu)師出馬,而第一類問(wèn)題,只要X、Y、Z不太離譜,基本不需要架構(gòu)師操心。當(dāng)然,如果現(xiàn)有架構(gòu)難以支撐這個(gè)需求的話,那架構(gòu)師也是責(zé)無(wú)旁貸的。

    InfoQ中文站:一個(gè)成功的架構(gòu)應(yīng)該具備什么特點(diǎn)?

    程立:架構(gòu)必須能夠達(dá)到功能與質(zhì)量要求,以合理的研發(fā)、運(yùn)行與管理成本產(chǎn)生使客戶滿意的系統(tǒng),這是一個(gè)基本要素,否則是不及格的。但僅僅滿足功能與質(zhì)量要求的架構(gòu),還談不上成功。

    在長(zhǎng)距離賽跑中,能夠讓系統(tǒng)以輕松的步伐始終跑在業(yè)務(wù)前面,是成功架構(gòu)的一個(gè)顯著特點(diǎn)。為了支持這幾年業(yè)務(wù)的快速發(fā)展,支付寶的每個(gè)重要子系統(tǒng)都?xì)v 經(jīng)了若干個(gè)大的版本升級(jí)。這些升級(jí)有些是沿著事先規(guī)劃好的迭代式發(fā)展路線進(jìn)行的,在保持整體架構(gòu)穩(wěn)定的情況下,通過(guò)增加功能、擴(kuò)展數(shù)據(jù)模型、引入新的處理 模式、不斷地?cái)U(kuò)展著功能與性能,持續(xù)給予業(yè)務(wù)強(qiáng)勁的支撐;但也有一些系統(tǒng)的升級(jí)則是接近于返工,架構(gòu)重新設(shè)計(jì)、代碼重寫、數(shù)據(jù)模型重新設(shè)計(jì)、已有數(shù)據(jù)大遷 移。路遙知馬力,雖然這些系統(tǒng)在上線的當(dāng)時(shí)都達(dá)到了功能與質(zhì)量要求,但時(shí)間可以判定架構(gòu)成功與否。

    成功架構(gòu)的另一個(gè)顯著特點(diǎn)是能夠?qū)镜暮诵母?jìng)爭(zhēng)力形成有力的支撐。最近,馬云先生在一次公開演講中,舉了一個(gè)例子,沃爾瑪要增加一萬(wàn)個(gè)買家,需要 買面積巨大的地,需要買很多的設(shè)備,需要很多的倉(cāng)儲(chǔ);而淘寶只需要增加一臺(tái)電腦就可以了。這個(gè)優(yōu)勢(shì)是商業(yè)模式帶來(lái)的,但其背后,是需要有一個(gè)高度可伸縮的 技術(shù)架構(gòu)來(lái)支撐的。

    InfoQ中文站:如何最大限度避免一個(gè)架構(gòu)設(shè)計(jì)的失敗?

    程立:首先說(shuō)點(diǎn)外因,架構(gòu)設(shè)計(jì)的失敗不全是架構(gòu)師的責(zé)任。假如一個(gè)企業(yè)戰(zhàn)略不清,或者雖然定義了清晰的戰(zhàn)略,但 沒(méi)有很好的溝通機(jī)制讓架構(gòu)師了解戰(zhàn)略,很難設(shè)計(jì)出全局上下一盤棋、富有生命力的架構(gòu)。當(dāng)發(fā)現(xiàn)看不清全局、看不清未來(lái)時(shí),架構(gòu)師應(yīng)該設(shè)法多溝通、推動(dòng)改進(jìn)。 如果始終推而不進(jìn)、溝而不通,就該考慮換個(gè)舞臺(tái)去發(fā)展了。不過(guò),對(duì)于處于創(chuàng)業(yè)期的企業(yè),這一條不大適用,這類企業(yè)中,架構(gòu)發(fā)展與業(yè)務(wù)發(fā)展在開始階段往往是 一個(gè)快速犯錯(cuò)、快速調(diào)整的試錯(cuò)過(guò)程,這樣的企業(yè)走向成功的同時(shí),也常常能夠培養(yǎng)出好的架構(gòu)師。

    在做架構(gòu)設(shè)計(jì)時(shí)必須以業(yè)務(wù)為本。不是說(shuō)讓架構(gòu)師去摳業(yè)務(wù)的枝節(jié),比如流程中的某個(gè)環(huán)節(jié)究竟應(yīng)該有幾個(gè)分支、或者某個(gè)業(yè)務(wù)參數(shù)應(yīng)該是多少,而是將精力放在理解業(yè)務(wù)本質(zhì),看清不同業(yè)務(wù)之間的關(guān)系上。在一個(gè)業(yè)務(wù)思想混亂的頭腦中產(chǎn)生的系統(tǒng)也一定是結(jié)構(gòu)模糊、行為混亂的。

    業(yè)務(wù)清晰之后,架構(gòu)師就像導(dǎo)演讀透了劇本,可以在腦海中構(gòu)思與創(chuàng)作了。擬定時(shí)空結(jié)構(gòu)、選擇風(fēng)格樣式、物色演員、規(guī)劃每一幕的內(nèi)容以及幕與幕之間的銜 接等等。待一切可以在頭腦中栩栩如生、流暢地上演之后,架構(gòu)其實(shí)就出來(lái)了。這一步工作做得是好是壞,主要取決于架構(gòu)師長(zhǎng)期以來(lái)積累的能力、知識(shí)與素養(yǎng),沒(méi) 有太多的捷徑。

    有幾個(gè)算不上新鮮的經(jīng)驗(yàn)還是值得提一下。首先,架構(gòu)師要建立自己的QA工具,比如一個(gè)質(zhì)量檢查表,能夠全方位地從研發(fā)、運(yùn)行、管理等維度,對(duì)架構(gòu)的 質(zhì)量屬性進(jìn)行客觀地評(píng)估,這個(gè)檢查表中各項(xiàng)指標(biāo)的值范圍與權(quán)重需要針對(duì)實(shí)際情況進(jìn)行個(gè)性化定制。到了一個(gè)新環(huán)境中的架構(gòu)師往往需要一個(gè)適應(yīng)期,在這個(gè)適應(yīng) 期中除了熟悉新公司的現(xiàn)有業(yè)務(wù)與系統(tǒng)之外,很重要的一個(gè)工作就是調(diào)整原來(lái)的質(zhì)量評(píng)估體系,使之新公司的業(yè)務(wù)相匹配。其次,在架構(gòu)師頭腦中的虛擬舞臺(tái)上,演 員是一個(gè)個(gè)系統(tǒng),對(duì)每種系統(tǒng)的能力與特性的理解會(huì)決定他構(gòu)思出來(lái)的劇情在真實(shí)上演時(shí)能在多大程度上符合期望,這需要在實(shí)踐中關(guān)注并積累,如果引入了全新的 演員,一定得讓他試鏡。還有一個(gè)是習(xí)慣問(wèn)題:不要把腦海中出現(xiàn)的第一個(gè)設(shè)計(jì)當(dāng)作最終版本,只要時(shí)間允許,要多創(chuàng)作幾個(gè)版本,其間多與同事討論、做些換換腦 筋的事,避免陷于某種定式跳不出來(lái)。這需要架構(gòu)師養(yǎng)成習(xí)慣,也需要公司研發(fā)流程的支持,比如讓架構(gòu)師盡量早地介入項(xiàng)目,有充分的時(shí)間醞釀與斟酌。

    最后,架構(gòu)設(shè)計(jì)不可能不犯錯(cuò),因此很重要一點(diǎn)是當(dāng)發(fā)現(xiàn)架構(gòu)設(shè)計(jì)有錯(cuò)誤時(shí),一定不要嘗試掩蓋或者固執(zhí)地堅(jiān)持自己的錯(cuò)誤,調(diào)整得越早,付出的代價(jià)就越 低。好的企業(yè)一定有一個(gè)非常寬容的氛圍、允許犯錯(cuò)并且鼓勵(lì)及時(shí)改正。我曾經(jīng)有過(guò)幾次在開發(fā)已經(jīng)進(jìn)行到三分之一甚至更久時(shí),發(fā)現(xiàn)架構(gòu)設(shè)計(jì)有嚴(yán)重缺陷的經(jīng)歷, 由于及時(shí)調(diào)整,加上團(tuán)隊(duì)的理解與配合,最終項(xiàng)目仍然取得成功,因此對(duì)這一點(diǎn)感受很深。

    InfoQ中文站:在支付寶的技術(shù)團(tuán)隊(duì)中,也采用了敏捷的方法,請(qǐng)談?wù)勥@方面的經(jīng)驗(yàn)。

    程立:支付寶的研發(fā)體系是從自身實(shí)際出發(fā)制定的,既要保障產(chǎn)品的高品質(zhì),又要保持對(duì)業(yè)務(wù)變化的快速響應(yīng),加上協(xié)調(diào)多個(gè)團(tuán)隊(duì)高度并行開發(fā)的需要,整套研發(fā)體系是一個(gè)精心設(shè)計(jì)的嚴(yán)謹(jǐn)結(jié)構(gòu),也是比較重量型的。但我們還是可以從中找到敏捷方法中的一些重要元素。

    首先談?wù)劦_@里,以我所熟悉的支付寶架構(gòu)團(tuán)隊(duì)的研發(fā)模式舉一些例子。之前提到,支付寶技術(shù)架構(gòu)是采用與業(yè)務(wù)發(fā)展齊肩并進(jìn)的策略,這個(gè)過(guò)程就像給 F1比賽中的賽車換輪胎,所有架構(gòu)改進(jìn)的實(shí)施必須安全、快速,盡量不打斷正常的產(chǎn)品研發(fā)的節(jié)奏。因此,在確定技術(shù)架構(gòu)的基本發(fā)展方向或者基礎(chǔ)設(shè)施產(chǎn)品的藍(lán) 圖之后,我們會(huì)將研發(fā)工作切分成很短的迭代,每一個(gè)迭代的目標(biāo)明確,一般只解決少數(shù)幾個(gè)技術(shù)問(wèn)題。

    以引入企業(yè)服務(wù)總線為例,第一個(gè)迭代的任務(wù)是調(diào)研,目標(biāo)是概念驗(yàn)證與產(chǎn)品選型;第二個(gè)迭代是試水,我們選擇了一個(gè)新的業(yè)務(wù)產(chǎn)品作為服務(wù)總線應(yīng)用的小 白鼠,當(dāng)時(shí)的目標(biāo)是解決高可用部署模式問(wèn)題、以及集成邏輯的統(tǒng)一管理問(wèn)題,架構(gòu)師進(jìn)入到該項(xiàng)目中,通過(guò)服務(wù)總線提供該產(chǎn)品與其它系統(tǒng)的集成方案,這個(gè)迭代 與新產(chǎn)品發(fā)布的同時(shí)完成;以后的迭代是一系列推廣使用的迭代,幾次之后,我們完全替換了原來(lái)不夠靈活的商用JMS服務(wù)器集群,并且整個(gè)技術(shù)團(tuán)隊(duì)可以不依賴 架構(gòu)組使用服務(wù)總線了;再以后的迭代是服務(wù)總線的自身的改進(jìn),如QoS的改進(jìn)、服務(wù)治理功能的增加等等。采用這種方式,每一次迭代都有實(shí)際可運(yùn)行的產(chǎn)出, 并且其結(jié)果可以作為選擇下一輪迭代目標(biāo)的依據(jù)。以這種模式,架構(gòu)發(fā)展以一種穩(wěn)健的方式小步快跑著。但與有些敏捷方法學(xué)建議的固定迭代時(shí)長(zhǎng)有些不同,當(dāng)“搭 順風(fēng)車”時(shí),是宿主項(xiàng)目的規(guī)模決定迭代的時(shí)長(zhǎng)。

    保證高效的溝通是另一個(gè)重要的問(wèn)題,這通常是采用我們俗稱為“閉關(guān)”的形式來(lái)解決的。項(xiàng)目上到一定規(guī)模,就會(huì)包下一個(gè)會(huì)議室,項(xiàng)目經(jīng)理、架構(gòu)、系 分、開發(fā)、測(cè)試等人員都會(huì)坐在一起,保持溝通的高效率,也減少不必要的干擾。對(duì)于長(zhǎng)周期的項(xiàng)目、或者需求難以在初期完全確定時(shí),在一個(gè)項(xiàng)目?jī)?nèi)部也設(shè)計(jì)一些 迭代,開發(fā)人員增量地交付功能,測(cè)試并行進(jìn)行功能驗(yàn)證,暢通無(wú)阻的溝通以及項(xiàng)目經(jīng)理在場(chǎng)的協(xié)調(diào)管理是這種工作模式能夠順暢運(yùn)轉(zhuǎn)的關(guān)鍵。

    InfoQ中文站:阿里巴巴和淘寶網(wǎng)的很多架構(gòu)也是基于SOA的,請(qǐng)談一下選擇和實(shí)施SOA的前因后果。

    程立:支付寶早期的單一應(yīng)用程序架構(gòu)只存在了很短一段時(shí)間就受到了挑戰(zhàn)。

    首先對(duì)這種架構(gòu)發(fā)起挑戰(zhàn)的是團(tuán)隊(duì)組織結(jié)構(gòu)與分工的變化。隨著業(yè)務(wù)領(lǐng)域的拓展,并行的項(xiàng)目越來(lái)越多,研發(fā)團(tuán)隊(duì)也迅速擴(kuò)大,為了使團(tuán)隊(duì)更好地配合業(yè)務(wù),走向?qū)I(yè)化,我們內(nèi)部開始按照業(yè)務(wù)線分組。跨組之間的溝通成本的提高要求必須將各自負(fù)責(zé)的系統(tǒng)嚴(yán)格切開,降低相互間的耦合度。

    另一個(gè)挑戰(zhàn)與支付寶業(yè)務(wù)特點(diǎn)密切相關(guān)。作為互聯(lián)網(wǎng)上的新型服務(wù),必須快速變化才能滿足需要,曾經(jīng)有很長(zhǎng)一段時(shí)間,我們保持每周兩次的新版本發(fā)布速 度;而作為電子支付服務(wù),它又必須絕對(duì)可靠、高度可用。為了解決這個(gè)穩(wěn)定與快速的矛盾,我們必須將系統(tǒng)中的業(yè)務(wù)核心獨(dú)立出來(lái),由專業(yè)的團(tuán)隊(duì)、通過(guò)更嚴(yán)格的 研發(fā)體系來(lái)支持它的發(fā)展;前端應(yīng)用程序則繼續(xù)以互聯(lián)網(wǎng)速度高速發(fā)展。

    業(yè)務(wù)、技術(shù)、管理上同時(shí)提出了解耦的需要,而“服務(wù)”很好地統(tǒng)一了這三者,所以,選擇SOA作為技術(shù)架構(gòu)的發(fā)展方向是很自然的。

    現(xiàn)在,我們已經(jīng)圍繞著公司的基礎(chǔ)業(yè)務(wù)建設(shè)了幾大核心服務(wù)系統(tǒng),并且搭建了以 ESB 為骨干、以服務(wù)框架為基礎(chǔ)的面向服務(wù)基礎(chǔ)設(shè)施。太極拳中講究腰功,拳論中說(shuō)“腰為主宰,腰為軸,刻刻留意在腰間”。這些核心服務(wù)以及配套的基礎(chǔ)設(shè)施很像支 付寶系統(tǒng)的“活腰”,它們的高可靠與高可用性是支付寶系統(tǒng)整體穩(wěn)定性的基礎(chǔ),它們的靈活性與可重用性支持前端業(yè)務(wù)有條不紊地創(chuàng)新、整合與優(yōu)化,它們的可伸 縮性保證了系統(tǒng)能夠支撐持續(xù)的快速業(yè)務(wù)增長(zhǎng)。

    InfoQ中文站:現(xiàn)在你們也對(duì)外開放了很多服務(wù),在架構(gòu)設(shè)計(jì)上有做特殊的考慮,或者經(jīng)驗(yàn)嗎?

    程立:支付寶很早就提供了外部API,為互聯(lián)網(wǎng)上的電子商務(wù)提供安全交易與資金流解決方案。現(xiàn)在支付寶已有上百個(gè)開放的API服務(wù),連接了數(shù)十萬(wàn)大大小小的商戶系統(tǒng)。

    我們覺(jué)得設(shè)計(jì)開放API平臺(tái)的思路與基于SOA原則進(jìn)行架構(gòu)設(shè)計(jì)很相似:業(yè)務(wù)上,需要理順業(yè)務(wù)關(guān)系、劃分清晰的企業(yè)業(yè)務(wù)邊界、并制定業(yè)務(wù)處理規(guī)范; 從技術(shù)上說(shuō),需要制定統(tǒng)一的技術(shù)標(biāo)準(zhǔn)、建設(shè)統(tǒng)一的通信基礎(chǔ)設(shè)施。由于新產(chǎn)品會(huì)不斷推出,因此,支付寶在內(nèi)部建立了一個(gè)API容器,方便擴(kuò)展新產(chǎn)品。將 SOA搬到互聯(lián)網(wǎng)上,SOA體系中固有的一些問(wèn)題,如安全性、可靠性、接口契約的穩(wěn)定性等問(wèn)題就會(huì)被放大,在架構(gòu)設(shè)計(jì)與標(biāo)準(zhǔn)制定時(shí),必須很好地考慮這些問(wèn) 題。

    出于安全與合規(guī)的需要,支付寶在制定API的業(yè)務(wù)規(guī)范與技術(shù)標(biāo)準(zhǔn)時(shí),特別關(guān)注身份與安全體系;安全與方便是一對(duì)矛盾,為了更好地處理這兩者的關(guān)系,支付寶在架構(gòu)上支持靈活的安全體系,可以根據(jù)業(yè)務(wù)特性與商戶個(gè)性需要,在安全性與方便性之間進(jìn)行折衷。

    互聯(lián)網(wǎng)上系統(tǒng)交互的非可靠性與交易與支付類業(yè)務(wù)的可靠性要求之間也是一對(duì)矛盾,因此,接口標(biāo)準(zhǔn)與統(tǒng)一的通信基礎(chǔ)設(shè)施中我們針對(duì)可靠性進(jìn)行了專門的設(shè)計(jì)。

    從接口契約穩(wěn)定性上說(shuō),我們當(dāng)時(shí)的做法是將技術(shù)標(biāo)準(zhǔn)設(shè)計(jì)成允許API接口增加新參數(shù),提供版本參數(shù),提供API接口的個(gè)性化配置能力,允許商戶定義一部分API上交換的數(shù)據(jù)與處理行為等。

    隨著支付寶業(yè)務(wù)領(lǐng)域不斷拓展,原來(lái)的從需求->解決方案->產(chǎn)品->API的方式,周期太長(zhǎng),已經(jīng)難以快速滿足大量合作伙伴的需 求。因此,支付寶現(xiàn)在正在由產(chǎn)品式的開放轉(zhuǎn)向平臺(tái)式服務(wù)的開放,通過(guò)加強(qiáng)開放基礎(chǔ)設(shè)施的建設(shè),向合作伙伴提供更基礎(chǔ)、更可重用、更體系化的服務(wù),達(dá)到與合 作伙伴充分協(xié)同,建設(shè)繁榮、共贏的電子商務(wù)生態(tài)圈的目標(biāo)。同時(shí),開放的業(yè)務(wù)服務(wù)與開放的技術(shù)平臺(tái)也正在推動(dòng)支付寶的業(yè)務(wù)與技術(shù)架構(gòu)向前發(fā)展,對(duì)構(gòu)建更大規(guī) 模的分布式系統(tǒng)、更大規(guī)模的并行研發(fā)模式都帶來(lái)了積極而深遠(yuǎn)的影響。

    InfoQ中文站:我們知道,支付寶的架構(gòu)平臺(tái)中采用了不少開源系統(tǒng),為何作此選擇?

    程立:除了支付寶與阿里巴巴集團(tuán)自主研發(fā)的很多基礎(chǔ)系統(tǒng)與開發(fā)框架、以及一些商業(yè)系統(tǒng)之外,支付寶也使用了很多優(yōu)秀的開源軟件。具有蓬勃的生命力的開源軟件對(duì)支付寶的技術(shù)體系是一個(gè)很重要的補(bǔ)充。

    在某些領(lǐng)域,一些開源軟件幾乎已經(jīng)是事實(shí)的標(biāo)準(zhǔn)了,它們的高質(zhì)量也是經(jīng)過(guò)社區(qū)的嚴(yán)格考驗(yàn)的,比如Spring和它的POJO編程模型。通過(guò)使用這些 開源軟件,不但讓系統(tǒng)可以在開始階段就站在一個(gè)比較高的起點(diǎn)上,而且對(duì)于加入團(tuán)隊(duì)的新同事,一開始就可以在一個(gè)相對(duì)熟悉的環(huán)境下工作。

    在另一些尚未形成標(biāo)準(zhǔn)的領(lǐng)域,在產(chǎn)品選型階段,我們一般會(huì)在開源系統(tǒng)與商業(yè)產(chǎn)品間進(jìn)行細(xì)致地選型,必須能夠滿足業(yè)務(wù)所要求的主要功能特性與關(guān)鍵質(zhì)量 要求。在同樣能夠滿足主要功能特性與關(guān)鍵質(zhì)量要求的前提下,誰(shuí)具有良好的可擴(kuò)展性,誰(shuí)更簡(jiǎn)單,誰(shuí)具有長(zhǎng)期發(fā)展的生命力,誰(shuí)有好的服務(wù)支持,都是最后做出選 擇的重要因素。其中,可擴(kuò)展性往往是一個(gè)選擇的關(guān)鍵因素。基于社區(qū)集體貢獻(xiàn)模式的開源軟件在可擴(kuò)展性方面往往做得很好。當(dāng)業(yè)務(wù)發(fā)展到一定階段,在技術(shù)上一 定會(huì)有大量個(gè)性化的需求,所選擇的系統(tǒng)必須能夠支持快速滿足這些需求。開放的源代碼也使我們?cè)趩?wèn)題響應(yīng)時(shí),具有更大的主動(dòng)性。隨著開源系統(tǒng)走向商業(yè)化運(yùn) 作,在服務(wù)支持方面也開始做得更好,這些都進(jìn)一步增加了開源系統(tǒng)的競(jìng)爭(zhēng)力。

    InfoQ中文站:請(qǐng)談一下當(dāng)前架構(gòu)師所面臨的挑戰(zhàn)。

    程立:“瞻前”、“顧后” ――這是我現(xiàn)在體會(huì)到的最大挑戰(zhàn)。

    先談?wù)劇罢扒啊薄.?dāng)業(yè)務(wù)個(gè)性不明顯、業(yè)務(wù)規(guī)模也不大時(shí),架構(gòu)師還是有很多容易模仿的定式與先例的。但當(dāng)業(yè)務(wù)的個(gè)性與規(guī)模到達(dá)一定階段時(shí),一定會(huì)有一 些別人從未遇到過(guò)的非常困難的問(wèn)題需要你去解決。作為站在企業(yè)技術(shù)金字塔塔尖上的一群人,當(dāng)過(guò)去的經(jīng)驗(yàn)用不上,搜索引擎也不能向你提供任何有用的答案,只 有獨(dú)立去思考,去做出重大決定時(shí),如果沒(méi)有充分的準(zhǔn)備,對(duì)企業(yè)對(duì)個(gè)人都是巨大的風(fēng)險(xiǎn)。這需要架構(gòu)師建立未雨綢繆的意識(shí),不斷推演未來(lái)可能的變化并思索應(yīng)對(duì) 之策,持續(xù)而有方向地積累知識(shí)、發(fā)展能力,建立廣泛的技術(shù)交流圈子,并且“顧后”。

    再談?wù)劇邦櫤蟆薄<軜?gòu)師的另一個(gè)重要的職責(zé)是發(fā)掘團(tuán)隊(duì)中的好苗子,幫助他們,使他們趕上并超越自己。無(wú)論這一點(diǎn)是否寫入你的KPI,這樣做都是必須 的。站在架構(gòu)師的立場(chǎng)看,架構(gòu)必須有一個(gè)好的技術(shù)梯隊(duì)一層層傳遞下去,才能夠有效、持續(xù)地貫徹執(zhí)行,如果只是架構(gòu)師們沖在前面,背后空了一大片,架構(gòu)永遠(yuǎn) 只能停留在藍(lán)圖上。站在企業(yè)的立場(chǎng)看,企業(yè)真正的技術(shù)實(shí)力,不在于已經(jīng)有怎樣的系統(tǒng)或者平臺(tái),而在于是否有一個(gè)強(qiáng)大而有生命力的技術(shù)團(tuán)隊(duì),通過(guò)快速?gòu)?fù)制架 構(gòu)師的技術(shù)與經(jīng)驗(yàn),可以幫助發(fā)展并壯大這樣的團(tuán)隊(duì),而企業(yè)整體技術(shù)實(shí)力的提升也促進(jìn)了架構(gòu)師提升。


    程立,支付寶(中國(guó))網(wǎng)絡(luò)技術(shù)有限公司。2004年開始參與淘寶網(wǎng)與支付寶系統(tǒng)的建設(shè),2005年起進(jìn)入支付寶,一直從事于互聯(lián)網(wǎng)電子支付系統(tǒng)的研發(fā)工作。現(xiàn)任支付寶首席架構(gòu)師,專注于電子支付系統(tǒng)的分布式服務(wù)架構(gòu)與開放架構(gòu)。

    注:支付寶數(shù)據(jù)架構(gòu)師馮大輝,InfoQ中文站編輯郭曉剛、賴翥翔和劉申對(duì)本文亦有貢獻(xiàn)

    posted on 2009-09-07 17:40 禮物 閱讀(424) 評(píng)論(1)  編輯  收藏

    評(píng)論

    # re: (轉(zhuǎn)載)程立談架構(gòu)、敏捷和SOA實(shí)踐 2009-09-09 10:03 買禮物
    SOA現(xiàn)在好熱呀~,不過(guò)沒(méi)怎么搞明白。。。  回復(fù)  更多評(píng)論
      


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。

    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 99在线在线视频免费视频观看| 中文字幕亚洲情99在线| 亚洲欧洲自拍拍偷午夜色无码| 亚洲欧洲自拍拍偷精品 美利坚| 免费观看国产小粉嫩喷水| 国产成人无码区免费A∨视频网站 国产成人涩涩涩视频在线观看免费 | 日日躁狠狠躁狠狠爱免费视频 | 亚洲欧洲在线观看| 亚洲综合一区二区精品导航 | 国产一级淫片a免费播放口之 | 91精品国产免费久久国语蜜臀| 久久精品无码专区免费东京热 | 一区二区三区在线观看免费| 国产精品免费αv视频| 在线亚洲午夜理论AV大片| 亚洲毛片av日韩av无码| 亚洲综合无码AV一区二区| 亚洲av日韩综合一区在线观看| 亚洲网站视频在线观看| 国产18禁黄网站免费观看| 亚洲情a成黄在线观看| 亚洲日韩aⅴ在线视频| 久久亚洲精精品中文字幕| 亚洲欧洲精品久久| 亚洲熟妇久久精品| 无忧传媒视频免费观看入口| 无码AV动漫精品一区二区免费| 在线观看免费播放av片| 亚欧在线精品免费观看一区 | 久久WWW免费人成—看片| 免费在线看黄的网站| 国产一卡二卡3卡四卡免费| 国产成人在线观看免费网站| 亚洲自偷自偷在线制服 | 亚洲午夜国产精品无码老牛影视| 亚洲精品线在线观看| 亚洲色少妇熟女11p| 国产福利免费视频| 国产h视频在线观看网站免费| 国产成人在线免费观看| 久久久久久亚洲精品中文字幕 |