章文嵩(淘寶正明)
本次溝通的主題是:身為技術主管或CTO,要如何在企業內部推動開源?
---以下為采訪實錄---
51CTO:章博士您好!感謝您再次接受51CTO的采訪。那麼首先一個問題就是,對於阿裡開源化在過去一年帶來的成本節省,您是如何評估、計算的?
章文嵩:利用開源軟件可以大大的節約成本。我們可以舉個例子來說,原來整個淘寶的那個核心數據庫——核心數據庫淘寶有很多,比如說有商品庫,有用戶 庫,有交易庫——我們就拿交易庫來說吧,過去是拿商用的解決方案,就是IBM小型機,EMC最高端的存儲,Oracle的數據庫,那麼這一套下來,不算軟 件的授權費用,硬件的成本就2000萬了,整個平台的處理能力大概是9000個TPS(每秒交易量)。
但是我們現在拿現代的一些硬件,PCIe的Flash卡,接在計算機的北橋上面,不經過南橋的存儲設備了,訪問速度很快,響應時間也很短。
我們拿PC服務器做——當然不是普通的PC服務器,大概八九萬塊錢的PC服務器,不是兩三萬的,因為那個八九萬塊錢的PC服務器在RAC,就是可靠性這些設計上會好一些。再加上那些存儲的卡,我們一台機器大概成本11萬多,做到能力是TPS大概八千多,接近小機的水平。
51CTO:單台嗎?
章文嵩:對,一台,但是響應時間更短。因為過去商用的系統,EMC存儲都是通過光纖來連接、傳輸,現在PCIe的傳輸速度更短,響應時間更短。這方 面我們當然不是一台機器解決,我們是16×2上去的,就是把數據庫分成16塊,每塊是master+backup,16×2上去的話,我的能力——交易庫 主要是寫入——寫入這方面就可以x16,我的TPS就可以達到12.8萬的TPS。這個能力遠遠超過原來9000個,基本上是15倍以上。我花了錢大概就 360萬左右,原來是2000萬的解決方案,這個成本的節約很大。而且你要從能力來說,能力提高了15倍,花的錢不到原來的五分之一,按照性價比來說,一 下子就提升了75倍。
51CTO:如果加上人力的成本呢?
章文嵩:我們真正深入到這裡面去,實際上人的成本是很少的。你真正核心的人員參與的不是太多,我們整體把這一套方案引進來,然後測試,人力成本應該 非常低。而且這個人力成本只是用一段時間,對於大規模的系統來說,幾乎可以忽略不計,因為這一套系統,你說是原來的75倍,原來是2000萬,你說75 倍,那這個有多少錢呢。
比如我們的CDN系統,原來我們拿商用系統,在2010年的時候,單說用戶體驗提高,就是圖片唰唰的出來跟一張一張的在那兒冒,這個對用戶體驗的影 響很大,對用戶體驗提升是非常大的。對交易的促進都可以先不說,光算簡單的硬件的投資,2010年那時候的規模大概是350G左右的能力吧,我們那時候整 個成本,過去2000萬,或者200萬建一個節點,後來變成了30多萬建一個節點,整體就省了1億多的錢。這1億多,相對於我們CDN核心的研發,大概也 就10個人多一點。
所以,在2010年那時候的規模,在只有300多G的時候,我們省了1億多元;現在我們是2400G的能力。那時候我們團隊獲得淘寶唯一的創新大 獎,創新大獎那時候其中致辭裡面說,未來五年這一套技術會給集團節約32億的錢,因為每年規模都會不斷的變大。只是硬件的這一塊就可以節約這麼多錢,相對 來說,研發成本其實很低了。我們團隊獲得創新大獎,也獎勵我們集體跑去澳大利亞轉了一圈。
51CTO:按照這樣說的話,成本這塊其實還是挺好估算的。
章文嵩:對,這個估算可能落實到具體的項目,實際上算還是很容易算的。而且真正用了開源的技術,我們自己掌握了核心技術,碰到了問題想怎麼干就怎麼 干。未來的發展也是,像我們的CDN系統也一直在改進。上面說的部分,2010年就結束了,2011年我們又引入了一些新的東西,比如說低功耗的服務器 啊,把軟件進一步的優化,2011年我們又做大節點的整合,比如說建40G的節點,因為要建2000多G的一個能力,不能還是10G、10G的一個一個 建,這樣節點數太多了。節點數多,管理上面會是一個挑戰。
比如說北上廣我們要建40G一個節點,整合之後就可以節約成本,存儲空間都可以節約。事實上現在這個技術,我們用了自己的技術,我們就可以自己按新 的方向,系統發展的規模不斷的演進,不斷的來改進它。用商用系統就沒有機會了,用了就掛在上面了,因為那是黑盒子,想改也改不了。
其實像我們這麼大的規模,商用軟件也並不關注,因為全世界像我們這樣規模的企業可能就這麼幾家。這麼幾家客戶,給它再多的錢,實際上總收入不大。
剛剛我在演講當中說,在交叉點的左側,個人和中小企業這個規模更大,商用軟件是給他們創造價值的;在我們那邊它是不創造價值的,如果我們繼續去用它,說明我們自己傻的,沒有認清這個規模效應。
51CTO:那麼您之前提到,2010年初,集團決定更多的做一些開源項目。將項目開源的結果,一個是有學生參與進來研究,一個是 同行會開始使用這個項目,促進交流和項目的發展。那麼,將項目開源之初是否設立了一些目標,比如做到怎樣算是成功的,這個我們是如何進行量化的?因為您之 前也提到,要將項目開源,工程師需要花三個月的時間將代碼整一整,要如何讓老板認識到這件事的價值?
章文嵩:代碼整一整這個過程對大家都是有幫助的,可以把代碼理的更干淨。一方面,代碼整一整,實際上相當於承認工程師的貢獻,因為每個文件必須要寫 上作者的名字,這是對我們開發人員是很好的認可,當然他們也在意自己的聲譽,花點時間把代碼理得更干淨,其實很多時候是自發的(而不是我們要求的)。實際 上這是很好的,一方面我們的開發人員的成果得到了認可,另一方面又可以自發的把代碼的質量改的更好。
另一方面,跟外部去交流的話,本身對於項目也會是一個促進,因為我們在公司面對的需求相對來說比較單一,別的公司如果再用,可能有別的需求,或者是發現我們軟件有什麼問題,這個時候軟件也可以不斷的完善。
51CTO:您剛才提到內部開源的流程,就是開源技術委員會。這個流程是怎麼走法?
章文嵩:我們實際上開源一開始也沒有設立什麼目標。因為開源這個,一般都是從小開始做起,很多時候,我們鼓勵還是先把它開源了,因為開源的項目本身 也是不斷的在迭代、演進的。所以一開始我們是要符合一些規章,比如說在軟件開源不影響集團的一些核心業務的安全方面,那大部分時候是沒問題的。你說具體我 們開源要做成怎麼樣,沒有太多的規劃和目標的。
自然而然,我們的開發人員都自發的參與了這個過程。應該說整個阿裡集團也是很開放的,相對來說企業文化也比較開放。我們的開發人員也喜歡做開源軟件,這兩方面的因素促使了在阿裡開源推廣還是不錯的。基本上我們現在淘寶的很多基礎軟件開源到外面了。
51CTO:其實我問這個問題主要是,可能有一些公司的技術部,比如像新浪的技術想開源一些東西,但可能一個涉及到安全問題,一個 涉及到工程師額外的一些工作,把一些數據剔除,寫一些注釋啊,把代碼整理一下之類的,CTO有時候就沒有辦法跟老板說這個東西有什麼好處,來推動這件事 情。所以想問一下,你們這裡有什麼他們可以學習的,比如說固定的一些流程或者是評估的方式?
章文嵩:你剛剛講的我們的開發人員發額外的時間,比如說補文檔啊,把代碼理的更清楚,實際上這本身我們的研發軟件這是必要的。本身對軟件是一個促進,對公司來說這是值得投資的。
51CTO:我覺得大部分公司好像都覺得軟件能用就行了,對可維護性考慮的不多。
章文嵩:我們覺得軟件不能光是當前能用,它未來也是要用的。隨著規模不斷的擴大,各方面新的需求進來,整個軟件還是要不斷的升級,不斷的改進,這些維護,這些花時間,我覺得都是值得的,公司應該要投資的。
51CTO:其實是一個理念的問題,因為大部分的軟件團隊可能不是這麼一個理想狀態。您是如何處理理想狀態和現實的一個平衡的?
章文嵩:那其實還是回到量化這個題目上。具體項目我們可以量化,但是整體我們阿裡開源了,對整個集團的技術品牌有多大的促進,促進當然很大,但是量 化還是蠻難的一個事情,我們獲得的好處也是蠻多的。比如說很多技術人員願意加入到我們這樣的開發團隊,我們校招的時候,學生很願意來我們這樣的團隊,很願 意來阿裡。
開源這個真正對公司的技術品牌產生了多大的影響,有時候很難去評估。像我們現在去校招,很多學生看過TFS,Tair這些代碼,那時候對校園招聘是一個很大的促進。這方面的促進怎麼去量化,怎麼去評估,很難。例如,我們花了很多錢搞了3000多人參加的技術盛會—阿裡技術嘉年華,我們想搞個模型來評估這項活動對阿裡技術品牌促進,然後我們可以把他算一個數值出來去跟老板說,一直還沒找到這個模型(笑)。
51CTO:比如像Tair這樣的一個項目,它的整個流程是怎麼樣的?
章文嵩:最早的Tair、TFS、OceanBase,都正好在我們核心系統部門,我們來推動這個事。前面也講了,我們Tair開源,一開始是 2010年3月份我們說要開源,真正開源要到6月份了,確實我們的開發人員花了三個月的時間,去整理代碼,編寫一些文檔,當然現在文檔其實也還比較缺少, 但是這是一個過程。一方面我們先把代碼開出來了,文檔也進一步的完善,外部的用戶也可以參與完善我們這些的文檔,也確實有用戶給我們反映bug,或者寄 patch過來,這對整個開源項目挺好的。像TFS來說,新浪微博有用,新浪微博在國內存圖片的規模也夠大的。
51CTO:TFS這個項目當時啟動是一個什麼情況?
章文嵩:TFS在淘寶蠻早就啟動了,當時是我們淘寶第一技術高手,像多隆大俠,在2006年底就開始做了。
51CTO:那TFS到了2010年的時候,工程師想把這個東西開源,那時候具體怎麼做的?那時候應該還沒有委員會吧。
章文嵩:對,那時候我們還在淘寶,我們淘寶的CTO,他審批通過了,同意開源了,就可以開源了。當時淘寶的CTO是吳泳銘,他很支持開源。
51CTO:安全方面的審核也是他來做嗎?
章文嵩:安全方面審核不是,有另一個團隊。我們公司內部有一個安全的團隊,主要是檢查裡面有沒有配置文件,或者是代碼裡面含有線上的一些數據,比如 說IP地址或者是賬戶這些信息,這些信息不應該放在裡面,萬一在裡面的話,我們的系統可能受到影響。把這些信息拿掉就可以了。比如說哈希函數,一些 initial的seed,這些不能夠放出去。如果裡面確實有一些靜態的seed,這些都要拿掉,至少要跟我們現在的不一樣。靜態的seed跟 random seed不一樣,不管哪台機器做都是一樣的,那麼這些哈希函數,比如一致性哈希,裡面的initial seed肯定是好幾台都一樣的。這個seed不能放在外面,尤其是跟外面交互的系統,如果知道的話,我們就會受到攻擊。
51CTO:像我昨天看到一個項目是講你們靜態化的,後來有人說靜態化放出來可能比較危險,會不會有一些項目本身就覺得放出來不是很安全。
章文嵩:不會,靜態化這個思路應該沒有問題。其實大部分的項目都不會存在安全的問題。
而且我自己個人覺得,像阿裡、淘寶這麼大規模的公司,我們真正的核心競爭力,是在我們商業上面,是在我們的業務上面。那些業務上面的架構,真正核心 是存在於數據中間,而不是軟件。軟件表示我們有能力未來可以做更大規模的系統,或者是更多的一些新的需求。真正數據是日積月累下來的。比如說淘寶上面的用 戶交易的數據,每個人用戶的誠信記錄,賣家的誠信記錄都在上面。假設有人把淘寶的很多軟件拿過來,找到合適的人也開發了這樣的一個平台——實際上也不是那 麼困難,只要找對人,一定可以做出來。但是你要跟淘寶這樣的平台競爭,很難競爭。因為淘寶上面有很多數據,這些數據就像一個社會有很多的信用記錄在那個地 方,那個地方是空白的,你說人們願意在什麼地方交易啊。
所以說淘寶積累下的是數據的優勢。因為數據是拿不走的,所以這個優勢是巨大的,而且這個優勢越積累越大。軟件肯定也是一部分,但是我們要擁有人才而不是擁有一個軟件。我們有了人,才可以解決未來更大規模的一些挑戰,更多的一些需求。
51CTO:所以說其實現在也是一樣的,CTO審查,安全團隊看一下,沒問題可以發,那發出去之後呢,還是由工程師自己操作?
章文嵩:對,一方面看代碼用什麼樣的License。我們一般會推薦用GPL,因為我們自己覺得整個開源軟件的基石還是GPL。你用了GPL,你獲 得的權利同樣要傳遞下去,要另一個接收方獲得相同的權利,確保整個軟件是開源的。就像Linux內核是開源的,它是GPL的,在Linux內核上面的工 作,大部分都是開源的,除非是寫模塊的,這就整體保證了Linux內核很有效的發展。
我們可以看到,比Linux內核更早的BSD,伯克利很早就把它開源出來了,它是用的BSD的許可。那麼思科在1986年就創建了一個系統,其中也 用了很多BSD內核做路由器,發展了它的IOS,Internetworking Operating System,都是在BSD上做了很多修改和改進。但是思科不會反饋給BSD的內核。那時候思科的路由器賣了很多,他們做了很多改進,但是它不會反饋—— 因為BSD協議是很寬松的。同樣蘋果的iOS,也是用了BSD的很多東西。同樣也不會反饋回來。
同時,BSD因為license過於寬松,我個人覺得另一方面也導致了core team——就是BSD的kernel team——比較封閉,導致這個BSD這麼多年,雖然起步很早——那時候的成熟度和應用度都還不錯,但是後來發展越來越緩慢了。
所以我們一般是推薦用GPL。我自己也覺得開源的世界裡面,基石的license還是GPL,包括自由軟件基金會那套GNU的工具,確實確保了整個開源世界一個有序的發展。
然我們也有開發人員根據自己的喜好選擇license,比如Hadoop相關的,比如Hive,那麼我們的貢獻自然用的是Apache的許可。這就是屬於跟隨上游的一些項目,上游用什麼,我們就用什麼。
51CTO:明白了。那麼下一個問題主要是有關托管平台的。為什麼我們當時選擇了自己開發一個淘蝌蚪的平台,甚至現在同時運作了三個開源托管平台,而沒有使用更加成熟的Github?
章文嵩:我們原來做淘蝌蚪項目的時候,看到Github確實比較成熟,但是那個平台本身的平台軟件不開源。Github背後也是一個商業公司,在做 開源方面不是那麼純粹。而且還有一個因素,就是Github在海外,國內的用戶訪問的速度,包括用戶的習慣,語言方面的習慣,可能也不是跟我們中國人很吻 合。那時候我們就想,我們干脆做一個完全開源的開源平台,要符合國人習慣的。我們內部開發人員也很有興趣,我們就搭建了一個,當這個平台搭建之後,也需要 持續的維護改進,我們現在很多開發人員都是業余時間做這個事情,主要時間還是要做本職工作的。所以這些平台的改進,也斷斷續續的在發展。
51CTO:這個項目沒有一個獨立的項目組?
章文嵩:我們都是虛擬小組。這個事情我們最近又把下一步做一些規劃,比如淘蝌蚪和阿裡的開源平台怎麼整合,已經有一個虛擬的團隊准備做這個事情——在忙過雙十一、雙十二之後。
51CTO:這個平台為什麼選擇SVN的方式呢?
章文嵩:SVN比較簡單。那時候公司內部用SVN比較多,git是我們內核團隊在用,其他的團隊用的少。當然現在遷到git的也越來越多了,我們後續也在考慮把git加到我們的開源平台上面去。
51CTO:那麼,現在平台上外部貢獻者的整體情況如何?
章文嵩:目前在淘蝌蚪的平台上,大概可能有350多個項目吧,真正阿裡在上面開源的自己的項目大概是100來個,大部分還是外部的。當然,比較大型的項目還是阿裡多一些,比如TFS,Oceanbase,Tair這些。
51CTO:那比如說,新浪微博給TFS貢獻過代碼麼?
章文嵩:目前好象還沒有。他們會提出來一些需求,我們會幫著解決。
51CTO:相當於他們有提交bug或者是request?
章文嵩:對。再比如說我們Tengine要發布,也收到一些bug的報告,包括bug fix其實也有收到過。
51CTO:你們有麼有做過這方面的統計,來自外部的這些貢獻多嗎?
章文嵩:多倒不是太多,但是有。
51CTO:這方面沒有想過做些什麼事情促進?
章文嵩:其實我們現在把代碼、文檔都放出來了,但是還有一些,比如說我們的bug tracking,原來我們TFS的bug tracking用的是內部的,那麼就有一些外部的朋友跟我抱怨,說你們那個issue system為什麼不開源,起碼讓我知道你有哪些issue還在。我知道了,我心裡更清楚有哪些坑,我就更敢用了。這方面我們還很值得改進。
其實我們現在很多代碼的提交都放在外面了,並不是說我內部開發一段時間,再一次性的放出去,我是讓所有的開發過程已經放出來了。所以像bug tracking,issue system這些,我們以後也應該把它們放出來。
51CTO:現在淘蝌蚪上的issue系統不是跟你們內部系統一起的?
章文嵩:沒有。我們內部TFS還有其他獨立的測試團隊在用原來比較熟悉的系統。
51CTO:用的哪些系統,可以介紹一下麼?
章文嵩:阿裡內部有好幾個,有克魯德,還有bugfree。後續我們也想推進這個事,因為將bug tracking和issue tracking放出來之後,大家也會知道我們現在項目上還有哪些bug未解決,哪些是known issue。
51CTO:那我們就期待啦。那麼最後一個問題,是一個國際化的問題,因為雙十一之後,Hacker News上也在討論,說淘寶的人是不是也應該到英文界去說一說之類的。你們這邊有計劃跟英文的開源界做更多的交流麼?
章文嵩:對,我們也正在考慮這個事情。包括這次跟O'Reilly的資深副總裁Gina和Mike都在講,整個我們雙十一的訪問量,面對的挑戰,包 括平台的交易額。我剛剛演講特意講我們191億的平台交易額,比美國所有電子商務網站加起來,比如說感恩節,Black Friday,Cyber Monday等等,所有加起來都沒有我們大。整個淘寶天貓的平台今年交易額到一萬億,一萬億也是一個很大的數目,我們已經是全世界最大的電子商務公司,比 eBay加上亞馬遜平台的交易額之和還要大。確實我們應該跟他們講,他們也感興趣,我們也在想,通過多個渠道,到國外做一些技術分享和交流。明年吧
當然,我們可以把好的項目增加一些英文的文檔,提升一下我們國內的開源開發者在國際上的影響力。