騰訊的開源革命

騰訊高級執行副總裁、技術工程事業羣總裁盧山,曾多次在內部場合講過一個讓他觸動的故事:

“一個新人來到騰訊後,他們team想要一個東西,在樂問(騰訊內網知乎)上找了一圈找不到。事情再極端點,如果他的團隊是新組建的,內網能提供的都是各個事業羣與生產系統緊密耦合的東西,很難拿出來就用,那麼這個新團隊就像一個孤島。”

盧山之所以對這件事印象深刻,是因爲他開始思考,走了20年的騰訊,各個事業羣能力很強,技術團隊也很強,但爲什麼外界甚至騰訊內部都感受不到這些能力的存在?

“這是非常現實的情況。”盧山說道。

在騰訊,技術服務於產品是常態,但這也導致騰訊內部的許多業務都各自形成了一個技術閉環。以應用在視頻上的服務器端編碼器技術H.265爲例,此前騰訊有四個團隊超過20個人圍繞各自業務訴求在同時做,做得水平都很高,但彼此沒有融合。以前,在騰訊可以找到很多類似這樣的例子。

研發環境煙囪林立、技術孤島等問題極有可能成爲掣肘騰訊未來發展的痛點。

930變革後,騰訊成立了技術委員會,由盧山和騰訊高級執行副總裁、雲與智慧產業事業羣總裁湯道生兩位騰訊總辦領導牽頭,在全公司推進開源協同和自研上雲,所有行動的目的都是想要消除留在騰訊體內的技術孤島。

下決心破除技術壁壘,優化研發環境,這是騰訊開源革命的緣起。打造騰訊自己的技術圖譜和開發武器庫,同時爲2萬多名技術人員搭建一個無縫協同的工作機制,或許是解決這種現狀的“銀彈”。

“開放代碼是第一步,也是需要邁出的關鍵一步。開源可以理解爲是一種文化,我們要從過去的代碼封閉,轉變成未來的代碼開放。”盧山掏出瞭解除騰訊掣肘的第一把鑰匙。

勢在必行的“開源協同”

騰訊給出的開源協同最官方的說法稍顯抽象:

“代碼開源、技術協同、減少重複投入、提升研發效率、降低運營成本。核心是代碼開源和技術協同。”

在採訪中,鈦媒體瞭解到,開源協同實際上是騰訊將各個事業羣最底層和共性的技術能力進行了一次梳理和拉通。打破壁壘,加強內部的開放和合作,這是騰訊開源協同的初衷。

“近一兩年,內外部突然出現了一些對騰訊的技術實力的質疑聲音,我們在反思。”騰訊技術委員會PMO成員、騰訊開源協同負責人鄭亞峯迴憶,“之前公司內部的確實有一些技術壁壘,部門與部門之間的隔閡太多了。同樣的技術,多個團隊在做。”

“其實在騰訊這麼大體量的公司背後,一定有不同的技術支撐體系。”騰訊副總裁王巨宏在採訪中提到。

以QQ爲例,QQ 是騰訊最早的核心業務,它的架構演變可以說是騰訊技術發展和成長的典型代表的一個縮影,從中提煉出來的智慧和經驗,濃縮成騰訊的“海量服務之道”。

騰訊內部有一個流傳很廣的說法,騰訊聯合創始人、前 CTO 張志東,早期爲 QQ 設計了後端架構,這個架構沿用了很長時間,支撐着 QQ 業務從無到有,直到後來上億用戶同時在線的體量。

這個說法或許也有誇大成分,但這套基於“有損服務”、“動態運營”、“大系統小做”、“過載保護”、“柔性可用”、“先抗住,再優化”等價值觀和方法論的不斷優化的架構體系,的確支撐了騰訊實現用戶量從0到億級的跨越。

除此之外,能夠證明騰訊技術實力和對技術極致追求的案例還有很多:如QZone時期的支持LRU的share memory cache,和基於裸設備的file system;以及Wechat在移動互聯網時代的分佈式IDC容災、容錯設計,等等。

但內外部關於騰訊技術的爭議也觸動了騰訊的深刻反思,鄭亞峯坦言:“此前騰訊基本上每個事業羣在存儲、計算、分析等方面都有自己的一套‘輪子’。”

這就造成,在騰訊內部,相同的技術領域,不同部門可能會重複進行基礎平臺的建設,由此也產生了資源、人力等成本的浪費。“將各個部門優勢的基礎平臺開源出來成爲公司級基礎平臺,其他部門直接在上面協同開發,實現統一的協同管理,我們想在內部營造開放的技術氛圍和開放的代碼文化,以提升公司的研發效能和運營效率。”鄭亞峯表示。

於是,在開源協同理念提出之後,騰訊從各個事業羣梳理出了一些相對基礎性的技術版塊率先進行了開源協同的實踐。其中騰訊CI和大數據“天穹”就是兩個較爲典型的例子。

騰訊CI Oteam是騰訊內部的一個跨團隊虛擬組織,由IEG(互動娛樂事業羣)的藍鯨CI(藍盾項目)團隊牽頭,組織相關團隊和個人共同進行騰訊CI的開發建設及運營,旨在減少重複勞動、提升研發效能。目前,藍鯨團隊已有多年內外部的開源經驗,騰訊CI開源協同項目目前已經服務於騰訊10000+開發人員。

據騰訊CI的開源協同負責人 、騰訊藍鯨產品中心總監黨受輝介紹,CI分爲下層的自動化流水線模塊和上層的度量改進模塊,下層屬於基礎設施,不及上層貼近業務價值高,但做不好下層就無法構建上層。而且下層的自動化容易統一,但上層的度量改進與各個BG業務類型、管理模式相關,不容易統一。

因此騰訊CI首先成立了Oteam達成的共識:下層流水線共建,上層度量相互交流學習。這樣一來,各事業羣只需要保留少部分人力共建下層流水線,可以將更多的資源投入高價值的上層建設。”

“平臺開源一步到位,協同則根據應用情況進行局部協同或全員協同。”黨受輝傳授騰訊CI團隊的開源協同之道,“在騰訊CI的oteam協作中,大家沒有把開源協同當做KPI,而是讓其自生長。”

截止目前,騰訊CI的Oteam中,共有來自全騰訊的217名開發人員提交了自己開發的插件,用於對接各個事業羣在CI流程中會用到的內部系統;提交組件287個,提交代碼10066次。

相比於騰訊CI對騰訊各部門的持續集成交付系統的統一,騰訊天穹項目則是將騰訊六大事業羣的大數據相關的系統做了統一。

“開源協同有很多好處,在大數據系統沒有統一之前,BG可能有自己的數據平臺,系統是割裂的,數據不統一;重複造輪子,開發資源造成浪費。同時,由於沒有開源,大數據系統對很多公司用戶來說就像黑箱,而開源協同之後,大家一起參與大數據的共建,系統的問題就會實現透明化。”騰訊大數據負責人,同時也是騰訊大數據開源協同項目“天穹”的負責人劉煜宏表示。

在劉煜宏看來,開源協同除了實現了問題的透明化和責任共擔,也是騰訊工程師提升自己影響力的一個有效出口。

他認爲,對技術人員來說,開源就是影響力,“現在很多開發的同學都主動要求把自己的項目對外開源,我們內部項目使用跟外部開源社區一模一樣的運作模式。公司從上往下倡導開源協同,對技術人員來說,對外的通道一下就被打開了,每個人都想自己的代碼能被成千上萬的人使用,也更容易打造個人技術影響力。”

一個部門某個項目被開源出來,也需要被其他部門立即知曉,保證不再重複建設,對此騰訊也建立了一套開源協同的管理運營方法。

據騰訊開源協同項目執行總監徐海麗介紹,開源協同項目成立之後,建設了一系列公司的內部觸達渠道,有開源協同官方網站、官方郵件號、公司內部企業推送渠道等,同時也通過內部技術交流社區“碼客”、騰訊技術地圖全貌“技術圖譜”、圍繞技術激烈探討的“吐槽大會”等各種方式,做好信息傳遞和協調溝通的工作。

盧山對技術圖譜的未來寄予重望:“五年以後項目經理、技術經理、研發經理,可以很容易在騰訊的技術地圖上選擇哪個東西可以用。”

目前,在騰訊,像騰訊CI和大數據天穹這樣的開源協同項目已經有50多個,k8s、CI、軟件源、大數據、配置中心等基礎底層技術的公司級頂層設計正在逐步形成。碼客社區在上線近10個月的時間內,產生了近3000個技術問題,觸發回覆及評論達15萬次,每個月有超過80%的技術人員訪問碼客社區進行技術討論。

內外共生的三步走戰略

騰訊開源三步走

開源協同的提出也進一步完善了騰訊開源戰略的鏈條。

今年6月,在由CNCF主辦的雲原生技術大會上,騰訊開源聯盟主席、騰訊開源管理辦公室委員、Apache Member堵俊平首次公開了騰訊整體的開源戰略路線圖。

路線圖顯示,騰訊開源有一個三步走的計劃,我們前面提到的開源協同其實是騰訊開源戰略的第一步,這一步的目的最終是要通過部門小團隊作戰或跨部門大團隊作戰的方式協同推進技術研發,以優化資源配置的方式集中優勢尋求技術突破。隨後,騰訊建立起篩選機制將代碼向內部開放出來。

第二步則是外部代碼開放,這一步,騰訊將優化設計與代碼結構,不斷拓展落地場景,有效利用外部貢獻者資源實現資源整合,構建技術影響力。

第三步是社區開放治理,在這一階段,騰訊將注重大規模技術推廣與應用、開發者生態體系構建、社區領袖與領導力培養、全社會研發資源的優化配置等等。

“這三步雖然順序有先後,但其實是在同步推進,這更像是開發中的‘迭代’概念。目前我們的資源更多是投入在第一步的,但在第二、三步上也已經有一些成績和產出。”堵俊平表示。

至今,騰訊已在Github上發佈了84個開源項目,包含微信、騰訊雲、騰訊遊戲、騰訊AI、騰訊安全等相關領域,這些都是經過了騰訊衆多明星業務海量檢驗的項目。由騰訊發起的開源項目累計在 Github 獲得了超過24萬Star數,在GitHub全球企業Star總數中排名前十,在國內和國際都受到廣泛關注和認可。

王巨宏也在採訪中提到,三步走戰略的前兩步,內部開源協同和外部代碼開源其實是相互促進的關係。

“我們對外開源時,規範、治理、管理辦法、工具等,都是全套跑通的。之前內部的開源協同剛推進時,我們原本以爲可能不需要這些,直接做可能更高效。”

但一段時間之後,騰訊發現不跟外部開源採取同一套標準,其實有很大的問題。於是騰訊開源團隊又快速的把外部規範,比如安全檢查流程、代碼規範要求,引入到了內部開源的建設過程中。

“如果沒有外部開源這些年的積累,可能內部又要在流程規範和管理制度上摸爬滾打很長一段時間。現在我們的經驗、規範都已經做好了準備,如果在內部開源時發現問題,可以馬上應用。”王巨宏表示。

騰訊開源管理辦公室執行總監許勇也認爲,爲了推動內部開源項目的持續發展和迭代更新,開源協同借鑑了外部開源社區的理念,在公司內聚集了對這個項目感興趣的團隊和個人,使內部開源協同項目能夠持續更好的發展下去。

當然,內部開源協同也直接推動了騰訊技術團隊外部開源貢獻率的提升,工程師的開源熱情正在被喚醒和激發。

“這是內部930架構調整後催生的變化,對騰訊開源生態產生了質的飛躍”,王巨宏表示:“內部開源能夠推動外部開源產生更多重量級的項目,以前開源的項目,前端的、工具類的比較多,現在大數據、AI深度學習、物聯網操作系統等方面的重磅項目也在不斷開源。”

截止目前,騰訊參與貢獻了Apache、Linux、Openstack、KVM、docker、NVDIMM、ceph、HBase、Hadoop、Spark、kubernetes、torrent、dht、goprocinfo、flannel、netlink 等衆多知名開源社區和項目,成爲會員和maintainer。同時,騰訊也正在整體推進工具平臺由SVN向更適合開源協同屬性的工蜂Git遷移,10個月內新增了600個開源項目。

自上而下的開源變革

新舉措的推行往往也伴隨着一些問題。

在騰訊CI、天穹等項目開啓之前,騰訊內部其實已經預見到了一些項目貫徹過程中可能會出現的插曲。

騰訊有2萬左右的工程師,各個BG以前都有自己的研發技術,如果現在突然要統一成一個技術,難免會又不一樣的聲音產生,這時候就需要自上而下的強力保證實施。

2019年1月4日,騰訊技術委員會正式成立,盧山和湯道生兩名騰訊總辦成員牽頭,幾大事業羣的技術負責人悉數進入技術委員會決策圈。

騰訊技術的指揮部由此誕生,負責統籌公司整體技術戰略規劃,制定公司級技術規範與流程,指導大型技術項目的落地。

過去的許多年,騰訊面對開源其實採取的都是一種“自下而上”的民間態度,並沒有從自上而下的角度整體審視過開源的戰略性。2013年前後,3Q大戰讓騰訊意識到了開放的重要性。這在技術方面的直觀改變就是,以張志東爲代表的騰訊總辦領導,開始向工程師們倡導“開放、複用和合力開發”的代碼文化。

“當時爲什麼是自下而上,因爲總辦雖然提了,但還沒到強制執行的地步,大家參與開源其實是完全自願。”許勇回憶。

過去幾年,這種自下而上的自願開源也讓騰訊取得了不少成果。但慢慢騰訊發現,在對外開源越做越大之後,自下而上的推進模式遇到了瓶頸。

“自下而上開源的項目更多是前端體量比較小的項目,很難撬動體量、影響力比較大的項目進行開源協同。”這個時候就需要一個自上而下的強力的推動。

那麼,騰訊爲什麼必須要撬動大的開源項目呢?

這背後其實與騰訊公司的整個戰略有關。騰訊副總裁王巨宏向鈦媒體介紹,騰訊目前正在積極擁抱產業互聯網,整個開發者生態對騰訊產業互聯網戰略來說非常重要。

在騰訊的To B戰略中,以CSIG爲代表的騰訊To B出口,雖然能夠爲企業用戶提供各種基於雲的服務,但騰訊不可能、也絕不會去遍歷所有的服務,雲在落地的過程中需要的跟合作伙伴走共同建設的道路。

因此只有做開源,才能吸引更多開發者加入騰訊生態,爲最終端的產業互聯網用戶、企業提供服務,騰訊產業互聯網的戰略才能落實到位

“開源從上到下都是跟公司戰略緊密配合的。原來自下而上的方法,如果只把一些前端的、工具類的組件開源出來,是對情懷的追求,但對業務沒有任何影響。但現在如果不把核心的技術平臺開源出來,不僅情懷受影響,可能業務都會受影響。所以騰訊必須做這件事。”王巨宏表示。

“開源代表一種未來技術研發的方式,這種技術研發方式是站在前人基礎上往前不斷地迭代,而不是反覆地造輪子。”騰訊開源運營負責人王春雨提到:“一個好的開源項目將會吸引到衆多的參與者,它在輸出自己能力的同時,也不斷在吸收這個社區的營養,會變得越來越健壯。在開源技術的支持之下,會大大的縮短技術創新的週期。”

騰訊改變了原來“自下而上”純自發開源的路徑,採取“自下而上”與“自上而下”相結合,自發與自覺相結合的開源新模式。在新的模式推動下,騰訊已經將一些非常核心、創新的項目開源了出來,最近剛開源出去的自研輕量級物聯網操作系統TencentOS tiny以及萬億級的大數據消息中間件TubeMQ,今年8月與 TensorFlow 功能互補的騰訊全棧機器學習平臺 Angel 也發佈了 3.0 版本。

但是在這一過程中,決策層也考慮到,騰訊現在已經不是“一聲令下”就能讓千軍萬馬跨越技術壁壘,從頭開始的小團隊了。在決策生成之後原來自下而上的傳統也不能丟,因爲需要一線員工來定義開源決策實施的新方式。

於是,最終技術委員會還是會選擇把內外開源的主動權進交給每一位參與開源的技術工程師。鈦媒體瞭解到,委員會從成立起,收集一線意見反饋的工作就一直沒停下來。2萬名技術人員圍繞着公司的開發環境、統一框架、研發流程、技術氛圍等問題展開討論,描述自己遇到的問題,提出解決思路。

在騰訊內部技術社區碼客、“騰訊內部的知乎”樂問、郵件等各種渠道上,這些話題幾乎成爲“日更貼”,討論的熱潮此起彼伏。騰訊技術委員會相信,“只有從下至上,才能發現真正的問題,只有從上至下,才能快準狠地解決問題。”

工程師骨子裏的開源文化

自上而下的改革不僅體現在覈心項目的開源上,騰訊的研發文化也隨之進行了升級。

鄭亞峯表示,開源讓代碼更透明,“talk is cheap,show me the code”這種開放的平臺,更容易讓工程師之間相互學習、相互交流和高效溝通。鄭亞峯也希望,未來在開放的基礎上,技術人員能夠把騰訊的技術深度和高度進一步提升。

對此許勇也認爲,原來靠“產品”得天下的騰訊,比較注重業務的增長,各個團隊都在做研發的閉環。但可能到了一定階段,需要大家共同一起做技術的變革和升級,這樣才能更有效地將更多資源,用到創新、代碼質量上。

騰訊副總裁姚星也曾經在騰訊內部技術社區碼客上對於“新代碼文化”做過進一步的闡釋:

開源是手段,協同是結果。當一個組織太大後,把所有的研發集中在一起是非常低效的。而‘去中心化’的問題又會讓公司研發各自爲戰,閉門重複造輪子。如何平衡‘去中心化’和‘重複造輪子’,開源協同是個很重要的方法。開源的目的是減少‘重複造輪子’,權限開放、代碼相互可見。協同的目標是‘去中心化’,能使用開源組件,能複用必複用;開源組件去BG部門屬性,共同擁有騰訊屬性;開發人員是開源組件的共同的參與者和創作者,不是甲方和乙方,從而保持快速的響應。”

今年年初,騰訊技術委員會的成立,讓騰訊再次明確了“開源協同、自研上雲”的公司技術戰略。“開源,協同,雲上生長”成爲了騰訊新代碼文化的關鍵詞。

我們希望從骨子裏做這件事,工程師寫的每一行代碼,除了支撐騰訊自己的業務,也會開放出去,創造更多價值。對內也是,全員都要做開源協同,開源將是一種文化的沉澱。”王巨宏總結道。

回到故事剛開頭的H.265,現在在騰訊,它是代號V265的開源協同小組。基於同一套基線代碼,分業務分場景,四個團隊協同合作開發,奔着打造業界最好的視頻編碼器的目標,正在爲騰訊自研業務和雲上業務的視頻壓縮做強有力的支撐。

更多精彩內容,關注鈦媒體微信號(ID:taimeiti),或者下載鈦媒體App

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章