從騰訊學(xué),騰訊技術(shù)的上云之路

2018年,潘亂寫了一篇文章《騰訊沒有夢想》,讓行業(yè)重新審視這個中國互聯(lián)網(wǎng)巨頭,后來在知乎上,騰訊技術(shù)員工發(fā)起了一個帖子:騰訊也沒有技術(shù)。
騰訊技術(shù)員工開始在內(nèi)網(wǎng)反映:
”一開始覺得,我們自研的組件能做到海量高并發(fā),覺得非常牛。但看到業(yè)界其他開源的組件后,慢慢覺得,別人比我們牛。如果我們一直在使用騰訊內(nèi)部的技術(shù)組件,慢慢會跟行業(yè)技術(shù)脫軌,并會越來越落后。“
”行業(yè)基本上已經(jīng)開始容器彈性擴(kuò)縮容了,自動伸縮完全自動化。但QQ還是要申請服務(wù)器,再去擴(kuò)容,從業(yè)務(wù)上來講,業(yè)務(wù)無感。但從技術(shù)上講,研發(fā)效率和基礎(chǔ)技術(shù)還是落后。“
”kv存儲的value只有字符串一種類型,所以要寫很多業(yè)務(wù)邏輯代碼,把一堆代碼序列化,再塞到kv中。但如果使用redis,完全可以很少的代碼,做相同的需求。“
”如果還是按照騰訊內(nèi)部自研輪子工作,就算掌握了那些組件又怎樣?出去之后個人不會找到特別好的工作。“
”一個封閉的循環(huán),不與外部接軌的情況下,技術(shù)演進(jìn)的唯一動力就是業(yè)務(wù)需求,最終業(yè)務(wù)發(fā)展到瓶頸之后,技術(shù)發(fā)展也會陷入停滯,就會形成一個自研-優(yōu)化-推翻的循環(huán)了。“
最開始,技術(shù)委員會會在內(nèi)網(wǎng)帖子下面盯著,并對具體問題進(jìn)行認(rèn)領(lǐng)。后來帖子多了,認(rèn)領(lǐng)不過來,只能在帖子下面回復(fù)”收到“。最后帖子后面追加了大量吐槽,完全負(fù)能量走勢了。
2018年9月30日,騰訊進(jìn)行了一次大的組織架構(gòu)調(diào)整,稱為930變革。
這次變革主要解決騰訊老員工反映普遍的幾個問題:
對于匯報、PPT、評獎和分享的重視,超越了工作本身;
微信群越拉越多,群里真正解決問題的人反而越來越少;
專家越來越多,高質(zhì)量的創(chuàng)新反而越來越少,淪為了養(yǎng)老院;
戰(zhàn)略上缺少大將,中高層權(quán)利板結(jié);
規(guī)則屢屢突破,價值觀搖擺,公司早期優(yōu)秀文化被稀釋;
騰訊管理層意識到,過去以產(chǎn)品為導(dǎo)向的割裂的技術(shù)棧,不僅產(chǎn)生了大量的浪費(fèi),也無法有效支撐新時期的業(yè)務(wù)創(chuàng)新。另一方面云計(jì)算不斷發(fā)展,騰訊很多業(yè)務(wù)和工程師無法去擁抱云原生技術(shù),上云已是大勢所趨。
騰訊高層推動了組織調(diào)整,將原來的7大事業(yè)部調(diào)整為6大,新成立了云與智慧產(chǎn)業(yè)事業(yè)群(CSIG)、平臺與內(nèi)容事業(yè)群(PCG)。同時還成立了技術(shù)委員會,目標(biāo)是打造騰訊特色的技術(shù)中臺。
而今天,我們的目光,聚焦于騰訊的技術(shù)中臺上云之路。
930變革3個月之后,騰訊宣布了兩個技術(shù)戰(zhàn)略:開源協(xié)同和自研上云。
開源協(xié)同的目的是推倒公司內(nèi)部的技術(shù)煙筒,讓封閉在煙筒內(nèi)的技術(shù)人員可以建立連接,互相看得見,實(shí)現(xiàn)一個中臺夢。
自研上云的目的是對公司技術(shù)價值觀和研發(fā)文化的全面審視。
整個戰(zhàn)略推動是自上而下的,不同于以往自下而上的賽馬文化。
930變革之前,騰訊ToB業(yè)務(wù)負(fù)責(zé)人湯道生曾經(jīng)向馬化騰和劉熾平提了一個技術(shù)變革的條件:公司要全力支持CSIG推進(jìn)騰訊內(nèi)部自研上云的技術(shù)戰(zhàn)略。
因?yàn)榧瘓F(tuán)已經(jīng)明確了,以CSIG牽頭去做騰訊的ToB業(yè)務(wù),但CSIG卻回答不了一個用戶問題,就是:騰訊自己的業(yè)務(wù)上云了嗎,你們自己有沒有用騰訊云?
這是個靈魂拷問,如果連微信、QQ都不用騰訊云,你怎么去說服客戶去用騰訊云。
那么騰訊云是整個騰訊的云還是僅僅是客戶的騰訊云。
反過來說,微信、QQ非常穩(wěn)定,如果微信、QQ也在用騰訊云,客戶將非常直觀的感受到騰訊云的價值。
客戶將非常有意愿,讓自己業(yè)務(wù)上用上已經(jīng)被微信和QQ充分證明過的技術(shù)積累和技術(shù)優(yōu)勢。
但,在930之前,這個答案是否定的。
以QQ發(fā)展為例,早年QQ不盈利但用戶量很大,那個年代還是一個服務(wù)器比人貴得多的年代。為了應(yīng)對網(wǎng)絡(luò)不穩(wěn)定和租不起服務(wù)器的困擾,騰訊在即時通訊實(shí)現(xiàn)時,采用的是UDP協(xié)議,而沒有選擇TCP協(xié)議。TCP協(xié)議雖然傳輸穩(wěn)定,但需要一直維持連接,費(fèi)服務(wù)器。UDP雖然會丟消息,但傳輸快,省錢。
后期,隨著QQ用戶的不斷增多,技術(shù)團(tuán)隊(duì)圍繞于服務(wù)端做了大量的優(yōu)化,包括算法、降低CPU消耗,底層能力放到數(shù)據(jù)庫等工作。
最終實(shí)現(xiàn)了騰訊系產(chǎn)品,如QQ、微信的”海量之道“的雛形,在PC時代遷移到移動互聯(lián)網(wǎng)時代,依然可以支持海量并發(fā),穩(wěn)定也是當(dāng)年微信迅速超越米聊的原因之一。
技術(shù)人員深扎業(yè)務(wù),幫助業(yè)務(wù)快速發(fā)展,茂密生長,這是好處。但問題是,技術(shù)專用、人員專用,一個業(yè)務(wù)的技術(shù)積累很難復(fù)用到其他業(yè)務(wù)上。
如何讓騰訊海量之道復(fù)用到騰訊其他業(yè)務(wù)上,進(jìn)而以云的形式提供給客戶,這個是云與智慧產(chǎn)業(yè)事業(yè)群CEO湯道生需要考慮的第一個問題。
云計(jì)算發(fā)展到今天,各家云廠商的基礎(chǔ)服務(wù)能力過于同質(zhì)化,毛利率低,競爭激烈,廠商很痛苦。
云計(jì)算被定義為水電煤,非常重要,但并不稀缺,對于客戶來說,不同云廠商只是采購方式的不同。同時,資源型公有云業(yè)務(wù),很難做出高利潤。而且,當(dāng)前云廠商的目標(biāo)用戶不應(yīng)該是互聯(lián)網(wǎng)企業(yè),更應(yīng)該是傳統(tǒng)行業(yè)用戶,而他們對于云的需求,不僅僅是資源。這一切都決定了騰訊云的定位,不能向資源型云服務(wù)商發(fā)展。
而騰訊的海量之道,正是騰訊云可以賦能于傳統(tǒng)行業(yè)用戶的主要價值。
于是,湯道生決定:自研業(yè)務(wù)、自研產(chǎn)品的轉(zhuǎn)型,是基于云的架構(gòu)來設(shè)計(jì),是時候了。
騰訊自研業(yè)務(wù)上云,要做的第一件事就是以什么樣的方式上云。到底是虛擬機(jī),還是K8S這層。
虛擬機(jī)和容器是完全兩種不同的上云技術(shù)。
虛擬機(jī)是通過物理機(jī)加一層應(yīng)用,把一臺物理機(jī)虛擬切割成多個云服務(wù)器,然后實(shí)現(xiàn)底層資源的靈活調(diào)度,是最基礎(chǔ)的云計(jì)算技術(shù)。
容器則是在物理機(jī)操作系統(tǒng)層面,把應(yīng)用和依賴環(huán)境集成打包,在遷移過程中,不需要依賴操作系統(tǒng),比虛擬機(jī)更輕量,對各種部署環(huán)境也更適應(yīng),是一種更靈活的調(diào)度技術(shù)。
業(yè)務(wù)方?jīng)Q定,必須通過容器上云,根本性建立起面向未來的底層技術(shù)架構(gòu)。
過去,每個業(yè)務(wù)為了應(yīng)對自己業(yè)務(wù)可能面對的流量高峰,每個團(tuán)隊(duì)都冗余一部分資源池做空閑資源,相當(dāng)于每個業(yè)務(wù)都有自己的buffer,一個業(yè)務(wù)一個,6個業(yè)務(wù)就有6個buffer,浪費(fèi)資源。
而自研上云之后,各個BG的資源匯總到一個池子里面,可以只留一到兩個buffer。共用一個池子之后,可以錯峰利用,算力節(jié)省。
總之,上云之后的第一個收益是成本的優(yōu)化。
但成本這件事,在不同BG情況則有所不同。有的BG的產(chǎn)品非常賺錢,成本在這里面是非常小的一頭,對成本沒那么敏感。
而且,BG負(fù)責(zé)自己的資源池子,更可控,好調(diào)度,好管理。
而且以前的技術(shù)設(shè)施已經(jīng)和物理機(jī)有了很好的綁定,如果底層切換到容器云上,短時間內(nèi)并不比管理物理機(jī)更省事,還得在技術(shù)上折騰,存在不穩(wěn)定的因素。
比如騰訊云有自己的容器調(diào)度平臺TKE,但各個業(yè)務(wù)BG也有自己基于K8S實(shí)現(xiàn)的容器彈性調(diào)度平臺,且和業(yè)務(wù)結(jié)合緊密。這種情況怎么辦?
每個BG在底層容器云調(diào)度上的投入人員,少則幾十個,多個上百個,這么大的團(tuán)隊(duì)做了很多年。現(xiàn)在讓統(tǒng)一遷走,統(tǒng)一替換掉,勢必遇到很大的阻力。
但在湯道生看來,只有讓業(yè)務(wù)長在云上,完成云原生的改造,才能讓騰訊2w多技術(shù)員工隨時看到外面的世界,才能保持騰訊技術(shù)上的先進(jìn)性,底層容器的統(tǒng)一,是云原生改造的第一步。再難也要走。
云原生已經(jīng)成為了技術(shù)的共識,于是大家同意,內(nèi)部自研業(yè)務(wù)必須上到騰訊云的TKE上,并得到了所有事業(yè)部BG老板的同意。
湯道生負(fù)責(zé)的CSIG,主要是面對ToB業(yè)務(wù),而其背后提供彈藥支持的是TEG。TEG,定位是做基礎(chǔ)設(shè)施,比如數(shù)據(jù)中心、服務(wù)器、安全、存儲、計(jì)費(fèi)等。
TEG團(tuán)隊(duì)的明星產(chǎn)品是存儲,存儲團(tuán)隊(duì)技術(shù)的積累來源于當(dāng)年QQ空間產(chǎn)品的需求,而湯道生當(dāng)年正是負(fù)責(zé)QQ空間業(yè)務(wù),于是CSIG和TEG之間有著濃厚的”戰(zhàn)友情“。
而這次推動開源協(xié)同與自研上云兩大技術(shù)戰(zhàn)略,正是由TEG和CSIG共同承擔(dān)。
在推動自研業(yè)務(wù)上云路上另一個絆腳石是”魔改“。
比如推動推動業(yè)務(wù)遷移到容器云平臺時,發(fā)現(xiàn)各個BG是在CSIG做得TKE基礎(chǔ)之上包裝了外殼,在外殼之上做管理工具、調(diào)度,于是集團(tuán)內(nèi)部各個BG出現(xiàn)了各種XXTKE的產(chǎn)品。
每個BG魔改,都有自己的理由。
比如游戲業(yè)務(wù),不同游戲有著不同的架構(gòu),做云原生改造有巨大的工作量。而且,游戲業(yè)務(wù)屬于內(nèi)容型服務(wù),過去的精力在于內(nèi)容打造上,架構(gòu)的技術(shù)投入本來就少,想要里面搞定云原生這件事不現(xiàn)實(shí)。
另一個原因是,騰訊云早期的容器化產(chǎn)品并不穩(wěn)定,經(jīng)常出現(xiàn)成功率低或pod之間通信不穩(wěn)定情況。這些情況會導(dǎo)致業(yè)務(wù)上的抖動,各個BG的研發(fā)團(tuán)隊(duì)既要面對云原生、容器統(tǒng)一的壓力,也要面對各個事業(yè)部老板的業(yè)務(wù)穩(wěn)定性壓力,難以抉擇,不得不魔改,造輪子。
”之前的調(diào)度系統(tǒng)可能不夠自動化,但穩(wěn)定可控。切到云原生后,即不可控,也不穩(wěn)定,在重視用戶體驗(yàn)的業(yè)務(wù)上,往往被一票否則“。
同時,騰訊內(nèi)部鼓勵自下而上的創(chuàng)新,也容忍失敗,很少有自上而下的鐵血下達(dá)。很多團(tuán)隊(duì)自研的技術(shù)組件確實(shí)解決了自己的業(yè)務(wù)問題,有的還做得很成熟。研發(fā)團(tuán)隊(duì)和自己的產(chǎn)品建立了很深的情感,說推倒就推倒,感情上很難接受。
”我憑本事打下的江山,憑什么要讓出去?“,很多技術(shù)團(tuán)隊(duì)的同學(xué)如是說。
對于這種情況,湯道生說:”我沒有殺手锏,沒辦法強(qiáng)迫業(yè)務(wù)團(tuán)隊(duì)的技術(shù)決策,只能從提供價值的角度去做“。
騰訊內(nèi)部,自下而上的行動會很迅速,自上而下的時候,往往先把道理講通。
騰訊云副總裁高向冉,最開始推動自研上云時比較隨意,”大家來上云吧“。
一說上云,很多業(yè)務(wù)都來了,自己主動申請。
但到了云平臺官網(wǎng)一看,沒有符合自己需求的云產(chǎn)品,一下就炸鍋了。
有人到內(nèi)網(wǎng)吐槽:”自研上云,就是自己研究怎么上云“。
跌跌撞撞,2019年2月,終于有了首個自研業(yè)務(wù)上云的產(chǎn)品。但可惜的是,比原計(jì)劃delay了3天。
delay的原因不是卡在技術(shù)上,而是卡在了流程上。
原定周五交付,但因?yàn)橘~號、計(jì)費(fèi)等流程細(xì)節(jié)沒有梳理好,騰訊云搞到了凌晨2點(diǎn),后面又是周六日,最后延期了3天。
這是一個縮影,反映了騰訊經(jīng)歷了十幾年技術(shù)封閉之后,在不同技術(shù)壁壘下嘗試必然面對的問題:尷尬、瑣碎、曲折、痛苦。
第一個自研上云之后,壓測發(fā)現(xiàn),云平臺的性能比物理機(jī)性能差了15%,最初的目標(biāo)是相差8%,這一下就差了一倍多。
騰訊有著大量面向用戶端的體驗(yàn)型產(chǎn)品,如果性能差了這么多,用戶體驗(yàn)必然受到影響。
整個2019年,CSIG團(tuán)隊(duì)參加自研業(yè)務(wù)上云的周會,都會碰到相似的提問”這個問題如果你們解決不了,我們就不用了“。
2020年初,騰訊自研業(yè)務(wù)上云,輪到了微信團(tuán)隊(duì)。
微信架構(gòu)團(tuán)隊(duì)拋出的第一個問題是:”云原生改造后所有架構(gòu)都要做到多地三園區(qū)容災(zāi),容器團(tuán)隊(duì)最好可以出一個報告,看看到底哪些模塊可以做好,哪些做不好“。
多地三園區(qū)容災(zāi)的意思是,要在不同的地方搭建完全相同的系統(tǒng),某一個地區(qū)出現(xiàn)重大故障后,可以無縫遷移到另一個地區(qū)。一個城市下面,要有三個機(jī)房,三個機(jī)房的網(wǎng)絡(luò)和電力要是獨(dú)立的。這樣三個機(jī)房中出現(xiàn)一個故障,就不會對整體業(yè)務(wù)有影響。
這個要求是合理的,是微信過去踩過的坑。2013年,因?yàn)楣饫|被挖斷,微信曾經(jīng)斷網(wǎng)幾個小時,自此之后,多地三園區(qū)容災(zāi),是微信的基本架構(gòu)容災(zāi)要求。
類似的,有的業(yè)務(wù)因?yàn)榧軜?gòu)老,還有固定IP的要求。但云原生的特點(diǎn)就是無狀態(tài),不關(guān)心容器的IP。這曾一度讓CSIG團(tuán)隊(duì)?wèi)岩桑瑯I(yè)務(wù)是不想上云,變著法提一些過分的要求。
但他們很快發(fā)現(xiàn),這些看似不合理的要求,其實(shí)是幫助騰訊云發(fā)展出更強(qiáng)壯的肌肉,成為服務(wù)外部客戶的新能力。
”我們的客戶越來越專業(yè),要求和標(biāo)準(zhǔn)也越來越高,這是好事“。
慢慢的業(yè)務(wù)也從最開始關(guān)注于穩(wěn)定性問題,逐漸轉(zhuǎn)變?yōu)榱岁P(guān)注于服務(wù)是否跑飽和了。
打磨了內(nèi)部這么多磨人的業(yè)務(wù),騰訊云也更有信心去服務(wù)好更多的客戶需求了。
在整個自研業(yè)務(wù)上云過程中,業(yè)務(wù)方是甲方,騰訊云是乙方,兩者溝通上并不對等,建立相互之間的信任就非常重要。
”大家相互溝通幾次,一起多解決一些問題,多做一些技術(shù)交流,一塊多吃幾次飯,很多問題都可以解決了。“
”把內(nèi)部業(yè)務(wù)當(dāng)客戶來服務(wù),怎么蹂躪我們都行,我們的目的是幫助他們做好。“
逢山過山,遇水搭橋,沒有什么捷徑。性能不行了,就把性能提上來;成本不行了;就把成本降下來,服務(wù)能力不夠;就把服務(wù)細(xì)節(jié)做到位。
云原生可以覆蓋開發(fā)質(zhì)量、業(yè)務(wù)交付周期、業(yè)務(wù)運(yùn)營難度,也可以幫助每個技術(shù)人員成長,提升技術(shù)人員幸福感,這是云原生的好處,也是大勢所趨。
不優(yōu)秀的架構(gòu)、生產(chǎn)環(huán)境的缺陷是業(yè)務(wù)發(fā)展的債務(wù),產(chǎn)品和業(yè)務(wù)團(tuán)隊(duì)要知道,不能債務(wù)過多,負(fù)債而行。每過一段時間,就要停下來償還利息和債務(wù)。不然債務(wù)總有一天會反噬你。
每一個參與了自研上云的人,都可以總結(jié)出諸多上云的好處,它讓騰訊云更強(qiáng)大了,讓業(yè)務(wù)資源調(diào)度更從容了,技術(shù)人員視野更寬廣了,公司技術(shù)交流更頻繁了。
騰訊自研業(yè)務(wù)擁抱云原生,可以看作是騰訊這家公司”危機(jī)“文化的外顯。
公司完成了既定戰(zhàn)略,管理者降低了成本,拆掉了部門墻,新的技術(shù)平臺讓基層技術(shù)人員跟得上技術(shù)變革的潮流。
云計(jì)算的上半場是圍繞云的集結(jié)、爭奪、會戰(zhàn)。而云計(jì)算的下半場,是自研上云,業(yè)務(wù)看不見云了,但云在腳下。
