楊鐳訪談:UCloud 的技術價值觀
你問我相信什麼樣的事情?我們相信雲計算是長遠的。
去年,作為《穿山甲專訪》系列採訪之一,我們曾經給大家分享過 UCloud 技術副總裁楊鐳先生的訪談。那是我和楊鐳先生的第一次見面,雖然採訪時間不長,但是他務實嚴謹的風格,也給我留下了深刻的印象。因此,這次又特意預約了他的時間,專程去上海和他深入地聊了一些過去七年 UCloud 的技術價值觀理念,並與這位從一線運維跌打滾爬出身的技術領袖的所思所想產生了深切的共鳴。
作為採訪者,我也是一位做了二十多年互聯網技術工作的老兵,雖然在私交上我和楊鐳並不算熟悉,但是隨著在互聯網、技術和開源方面話題的展開,我們很快就聊得十分投機。
【圖:現場採訪圖】
第一章 一位技術人員的成長史
話題是先從楊鐳先生的技術背景和從業經歷展開的。
老王:是否可以請先介紹一下你之前的技術背景和你的從業方面的情況?
楊鐳:我結合 UCloud 整個技術發展的情況和我自己的情況跟你講一下。
我的背景是這樣的,我 2006 年加入盛大在線,剛入職時我是從最一線的運維人員開始做的,大概兩年多以後逐漸地開始參加一些研發的工作,做一些運維的平台系統開發工作。
我跟老季(UCloud CEO 季昕華)是大概 2008 年認識的,他當時在管盛大在線。盛大在線提供運維平台來支撐各個遊戲部門的業務,包括像盛大創新院的伺服器,其實背後都是由盛大在線提供運維的。在之後做盛大雲時,我們承接了非常多的業務部門的運維工作,而當時我就是在做平台技術方面的工作。
那時包括 OpenStack 才剛剛出現,AWS在國內剛被知曉,而我們那時候自己最早做虛擬化都是通過 VMWare 來做的。我們一直在關注云計算的發展。在 2011 年底,老季出來創業時,問我有沒有興趣出來,我就出來了。
我們當時認為,運維應該走到一線去產生業務價值,而雲計算正好是可以讓做運維、做技術的人能做產品的一個技術。雲計算說白了是把以前運維的東西放在台前了,可以去賺錢了。
?從一封未發出的郵件說起…
楊鐳:當時我離開盛大的時候,寫了一封郵件,但郵件我沒發出去,一直存在我的草稿箱里,現在還在。其實我對盛大也是挺有感情的,整個平台都是我們一手搭建的,做了很多很多的事情,還是很辛苦的。
那封信大概的意思是說,雲計算真的能解決很多問題,它能讓伺服器彈性地、不用關機去升級內存和 CPU……還有很多充滿想像力的事情,其實這也是 UCloud 的初衷,是我們出來創業的初心,包括老季在內,其實也是這樣的,在那個時候我們每次出問題,他都知道,可能是哪個機房的網線插反了,或者哪個伺服器配置不小心沒搞對,就像蝴蝶效應一樣引發了嚴重的後果。
那時候出來,我們就是想把雲這個事情做好。
踐行新技術,到處吃螃蟹
楊鐳:因為我不是從研發出身的,當時 UCloud 創業的時候也不容易,我們當時除了三個創始人之外,還有五個研發技術人員。當時所有的運維、開發、底層的一些工作,這些我都參與過。
一開始我是做網路方面的研發,當時懂網路的人比較少,而我是做運維出身的。那時還沒有 SDN 的概念,我們開始做雲計算的時候,當時主流的虛擬化技術是 Xen,KVM 剛進入視野。我那時候很關心 Linux 內核方面的技術,我認為 KVM 一定是有發展的,所以就建議圍繞KVM而不是Xen做底層虛擬化,我們一開始採用的 KVM 就是這樣來的,結果在後面就少走了很多的彎路。
我主要的一個工作是虛擬機創建流程,這跟我自己之前的一些運維知識也比較匹配,在這方面我做的很多工作主要是優化。這裡面其實有一個雲計算產品的精髓,雲計算產品如果要做好有兩方面:
一方面技術要做好,它的可拓展性、穩定性要好,這是從研發的架構層面來看;另一個方面,你要真正地懂這個產品。
比如說雲主機,你現在來看很多雲計算產品的功能都已經習以為常了,但是 UCloud 一開始做了很多可能現在看起來不同尋常的事情。為什麼會做這些事情呢?根本原因在於我們對於運維的理解比較深刻,所以我們敢先做這些功能。比如說當時有一個叫「重裝系統」的功能,當時很多雲服務商是沒有這個功能的——那時候還很早,大約是 2012年的時候——這是我現在回過頭來看一開始 UCloud 在那個階段能衝出來的一個蠻重要的原因。
當時 SDN 也是這樣的。在那個時候,很多技術和框架還沒有標準的、可以參考的開源實現。比如說做虛擬化,你可以用 KVM 或 Xen 都能做 。因為那個時候我對網路方面一直很感興趣,我以前主要是做運維,對 IPtables 很熟悉,排查過非常多複雜的現網故障,所以對於IPtables在生產環境中的使用有一定的把握。當時我們就是這樣,去 AWS 的 EC2 虛擬機中抓包結合網路上的材料來分析背後的實現方案,然後用最有把握的工具鏈來實現。我們很快就做了一套自己的 SDN——當時還沒有 Open vSwitch,它是 2013 年出來的——而我們當時就很大膽地採用了一個這樣的東西。現在你看 UCloud 發布的技術文章、我們把技術實現方式都講了出去,但是那個時候你只能自己猜和試驗。
雲計算的問題在於什麼呢?它的產品是技術型的,客戶用你的產品和服務的時候,你跟客戶接觸的人員是要懂技術的,儘管我們傳統上認為這個事情很多還是商務上、銷售上的事情。但是最終你要成就一個優質的客戶,因為只有優質的客戶,它的業務好,才會更多的買雲服務。而優質的客戶不光看客戶關係的,看的還是你的技術、你的產品和你的人員是不是專業。因為這個原因,所以我後來在整個 UCloud 工作的過程里,不斷地在往前走,去做技術支持。那時候我們很重視客戶,我去做解決方案架構師,甚至有段時間在事業部參與銷售工作,其實是因為被這個問題推著往前走的,包括我現在其實主要的精力也在負責產品以及整體的技術管理這塊。
差不多我的技術歷程就是這樣的,這也是 UCloud 技術這幾年發展的一個縮影。
第二章 技術觀與價值觀
老王:你作為 UCloud 的技術負責人,之前在 TIC 大會上我也聽你講到過 UCloud 的技術價值觀的觀點,我想了解一下在宏觀上、較高層面上你是如何看待雲計算技術的發展的,以及這裡傳達了什麼樣的價值觀?
「能力」——用工程能力解決技術問題
楊鐳:接著前面的話題說。儘管在方向上是對的,但是我們還是走了很多小的彎路。我們有一個核心的能力,也是 UCloud 的核心技術能力,就是出現 BUG 或者架構缺陷的時候可以很快地在現網透明地升級解決掉——這實際上是對我們後端的無縫升級能力特別大的挑戰。我自己的感受是,一開始講要這樣做時我其實不太相信能做到,但是在第一年,我們就做到了很多這樣的事情。
我舉個例子,當時我們產品上線以後,做彈性 IP 的實現,一開始很簡單,我們搞幾台設備,用IPtables實現了彈性IP和內網雲主機的映射,放在兩台機器上,有故障時候服務自動切換,一切都很美好。但是上線以後就開始發現問題,這兩台機器不停地宕機,其實就是出現了 「Kernel Panic」。因為我們一開始只有兩台核心網路接入設備,宕機一台就是 50% 的服務不可用,然後客戶自然就炸了。但是那時候我們是解決不了這個 「Kernel Panic」 問題的,儘管懂一點內核知識,但是對內核代碼層面的問題並不了解,我不知道為什麼會發生,雖然我知道肯定是那個方向的問題。
我們搞不定怎麼辦呢?當時老季和我們 COO 經常在外面和客戶解釋網路故障的原因,例如中午和客戶吃飯,邊吃邊告訴客戶我們出了什麼問題,會採取什麼樣的措施確保不再出現。而在後面,我們做了一件什麼事兒呢?我們大概花了 2-3 天的時間,我們把兩台集中式的伺服器變成分散式的了,因為在物理機上崩潰了之後、伺服器就掛了嘛,所以我們把這個服務放到虛擬機里去,每一台物理機上我們放兩台。這樣比如說到時候這裡宕機了,這兩台就可以及時切換,而且因為是虛擬機,切換速度很快。我們寫了一個自動化地拉起所有服務的腳本。兩三天就完成了,就把這個問題救活了。如果當時不解決,可能 UCloud 就掛了。
我們靠這個機制頂了大半年,直到我們的內核負責人來了。最後,發現是什麼問題呢?確實是流量帶寬控制那裡有一個隱藏的 BUG,這個 BUG 其實連 CentOS 都沒修復——因為我們用的是 CentOS——它沒修復,而我們也搞不定。當時去查找 CentOS 的補丁列表,並沒發現有這方面的補丁。到最後是怎麼發現的呢?是上游後來發一個修復,但是這個修復 CentOS 一直都沒放進來。
你看,這本身是一個非常深入的技術問題,但在創業的時候你不一定能解決,而我們通過架構的優化把它解決掉了,這實際上是 UCloud 從成立第一年開始到現在的一個核心能力。我自己經歷過這個事情以後,再遇到什麼事情都不怕了。
用架構、用工程能力去解決了一個隱藏很深的技術問題,以成本最小的方法解決問題。
楊鐳:這是一種變換的能力。這是整個 UCloud 技術文化所貫穿的一點,先提供一個方案把它解決掉,讓我們的服務品質不會降低。而要做到這一點,我覺得最難的是你需要對工程這個事情有深刻的理解。大家都會說工程師很重要、工程能力很重要,但是說實話,就像我開始來到 UCloud 的時候,我也會講我是工程師,我很自信這一點,但是在我第一年遇到並解決了很多問題以後,我發現自己其實還不太懂。比如說,你看現在最近很火一些知識付費類課程,當我走到那個高度後我跟你說這個事情應該這樣,應該那樣。但如果你是才進入行業兩三年的人,你是聽不懂的,你並不知道怎麼做,只能知道這句話應該是對的。這句話可能確實是對的,但是在日常工作中,你第一時間是反應不過來的,因為你不會深刻理解這句話。
一開始我們的工程能力就是很強的,因為這個基因來自於創始團隊是當時最頂尖的工程團隊。雲計算天生對穩定的要求特別高,這是非常偏工程化,而這個能力對整個行業的影響是很深遠的。
「嘗試」——當時膽子真的太大了,走得很前面
楊鐳:當時我們遇到的挑戰很多,我們一開始第一代用 SDN 白盒交換機的,當時沒多想就上了,然後我們遇到了非常多的問題,最早還用過 Open Switch。其實 UCloud 前幾年在技術上走的比較靠前,因為我們規模較小,決策更快,而且我們的技術團隊膽子也很大,因為對技術團隊很自信,對自己的工程能力很自信,所以敢嘗試新的技術。比如說在網路層,我們有一套是用的 OVS,還有一套是用白盒交換機,而我們在兩套之間還做了無縫地升級。我們的膽子大,所以那時候我們玩的都是新的技術。我還記得我在 2013 年出去做過 SDN 相關的演講,現在看來當時膽子真的太大了,走得很前面。
那時候大家都知道是趨勢,但是到底會怎麼發展還沒有人敢下定論,就像 Service Mesh 一樣,現在絕大多數公司在做研究,在做概念驗證,而我們已經在產品環境上跑了,我們走在很前面,有點孤獨。
從我自己的角度看,我們那時候技術還是走得很快的。我舉一個例子,比如現在有的雲服務商要在兩個地域之間打通,比如說從北京到香港,一般會告訴你要找第三方的網路供應商幫你打通。而 UCloud 是怎麼做的呢?我們在底層有物理專線,用戶只要在控制台點一下兩邊就通了。大概在相當早的時候,我們就提供了兩個地域連接打通的功能。現在有的雲服務商還需要幾天才能為客戶打通,而我們只要控制台上點一下,計費之後就通了,兩個地域間的虛擬機就全部都互通了。
我記得那時候在這個功能的發布前夕,我們為此做了一整個通宵。在早上 7 點鐘的時候,公司有人來上班了,我就在群里發了一條消息,說我們這個搞完了,大家都很激動,雖然現在兩個地域之間的雲計算伺服器連起來是很正常的,但是在那個時候是沒有人做的,那時候就感覺很有成就感。
其實好幾個 UCloud 早期的研發同事,他們都有類似於跟我一樣的事情,只是我當時的領域全部在網路上,而他們的領域在其它的方面。
整個雲計算這個事情,它的核心其實是一個技術問題,最終想在這個地方走長遠,本質上是要比技術能力的,一不小心就會落後。
我再舉一個例子,我們在 2014 年下半年的時候招了第一個做 DPDK 研發的人,那時候我們知道 DPDK 技術發展前景還不錯,所以我們招了這個崗位;而到了 2018 年的下半年,如果哪家有雲產品而沒有 DPDK 技術,你的產品是完全不具備商業競爭力的,你會賣得很貴,性能非常差,而友商會賣得很便宜,性能又很好,這個就是技術的紅利。DPDK 的紅利,但是如果你當時不投入的話,到現在可能會來不及。這是看三年的,所以我們現在在做 Serverless 方面的工作,投入是比較大的,但是如果我們不投入,可能三年以後或者四五年以後就出局了。
楊鐳:我們還做了很多很有意思的事情。比如,很多用戶買了雲計算的虛擬機以後由於密碼不嚴格被黑掉了,然後就變成肉雞對外發大量數據包。這個事情很多雲服務商的處理是很簡單粗暴的,就是把你機器關掉,但客戶其實是很受傷的。而我們當時不是這樣做的。我們看,它不是對外發包嗎?我們在宿主機上打開 TCP 來抓包,比如說 10 秒鐘的包——因為不能長抓,長抓的量太大了——把它放到資料庫里,然後我們去分析這個 TCP 包的特徵、出入的比例,如果只是出站沒有入站的話,那就肯定是被利用攻擊了嘛。後來我們發現,所有被反射攻擊利用的特徵都是這樣的。我們發現如果符合這個特徵,就把這個虛擬機的網路給處理掉——我們會把它的網路給漂走,叫做隔離區,並沒有把機器關掉,不會影響其他人,但是他的虛擬機自己還是可以登進去的。我們把這叫做最優選擇,但是這個技術上很複雜。
實際上這不是純技術的問題,這是一個理念,你要懂技術,還要懂業務,還要懂數據分析,還要設計一套東西把它串起來。
我們覺得自豪的一點不是說這個技術很厲害,而是我們的友商沒人這樣去做。我們做了好幾件類似的事情,我們最終帶動了行業的發展,客戶在 UCloud 里體會到好處以後,他跑到別的雲服務商說,你看 UCloud 這樣做的,別的雲服務商沒辦法,就被我們反逼提供這樣的功能。而且這種功能不是說我們為了超越誰,而是我們自己想出來的。我們自己的研發人員自己關起門來說,對這種事情還是挺自豪,某種意義上我覺得這其實是種創新。
「價值觀」——我們相信雲計算是長遠的
老王:你剛才介紹了 UCloud 的情況,作為技術人員我也覺得很有心嚮往之的感覺。你覺得目前而言,你們這個四五百人的技術團隊的優勢主要是在工程能力上還是在你們團隊上的技術文化上?
楊鐳:從我這個角度,首先這是我們的精髓、文化或者說是技術文化。在這個問題上我們是不允許所謂的不純粹的。所以在管理上,其實我們對剛才說的這幾件事情,我們是要求很高的,如果你新來一個人你在文化上不認同,這個可能不適合你。
還有一方面,我們對整個技術的價值觀就像上次我跟你聊的一樣,我們會要求很高。我們除了自己不收集,還會幫用戶把隱私保護好,告訴用戶不要給我們任何的信息,而多數的公司是反過來的。我們大概會在 1 年多後完成大部分雲上數據的加密,包括存量的數據。就像我們在去年的 TIC 大會上說的,這裡會堅決投入,而且不是一個小的研發投入。因為說白了用戶未必自己訴求那麼強,很多時候沒這個意識。而我們做這個事情因為有很多存量的雲主機,幾十萬台的規模,我們要透明的、不影響性能、安全地放上去,而且密鑰還要定期輪換,不能老是一把密鑰,但是要輪換的時候又不能影響性能,所以在工程上是有挑戰的和有技術深度的。我們做那麼多的事情,說白了這就是價值觀問題,我們真的對用戶的數據安全非常重視。
樹立了一個自己的獨特價值觀,而且為了這個價值觀付出了代價、成本。
楊鐳:儘管我們現在人不少了,但是我們產品線也很長,我們這點人也是不夠的,我們現在做這個事情都在加班做,說白了時間不夠,只能花時間解決這種問題。這種事情說白了是在價值觀上,你做不做可能沒有區別,但是我們認為真正長遠地看這個事情是有意義的。眼前不會有太大的得益和收益,但是從長遠的趨勢看,從我們的信念看,保護隱私、保護數據安全其實是一個所有人都會走向的共同的目標,只是現在還看不到。
所有的這些事情其實都是歸納到一點,你相信什麼樣的事情?我們相信雲計算是長遠的。我們跟客戶的合作不是做一鎚子買賣,我們甚至於對客戶都有要求,我們都要做得很優秀,我們要長遠看這件事情值不值得做?當然值得做。為什麼要看長遠?因為我們對自己還是有信心的。其實你的現在是被過去決定的,你現在是為未來做的,所以我們現在在這個層面上想的事情都是三年、五年以後的。現在這些從大勢來看,我們做的這些其實都是因為我們前三年做了一些事情,我們堅持了一些事情,因為做了那些事情,我們活了下來了。現在數據隱私這個事情也好,數據安全這個事情也好,或者是很多 Serverless 產品也好,我們相信在那個時代會更重要,所以我們堅持做這個。
第三章 尾聲
老王:做這個專訪,一方面我們希望看到真正的技術人現在具體做哪些事情。另外一方面我們希望讓大家看到有這樣的公司在做具體的事情,這些事情會不會對他們產生觸動、啟發甚至吸引他們去關注或者參與,這是我們希望能進一步做到的東西。
我覺得今天你婉拒了很多採訪的邀約而接受我們的專訪,我覺得也很榮幸。一方面我們可以持續性地關注你們這邊的技術進展,我們把有些可能在你們看來不值得一提,但是在我們看起來可能非常重要或者更有傳播和示範意義事件傳播給大家。我覺得今天的採訪讓我確實地了解到了很多我原來沒有想到或者沒有觀察到的地方。
楊鐳:我從一個運維人員走到現在,現在做這個事情我才能發現原來是這樣的。我覺得我能理解你,因為大家專業不同,我們正好每天在這裡做事情,所以就往這個方面想。我希望這篇採訪能讓大家知道有些事情怎麼做更好,只是我們走在了前面一點,我們是這個行業里的人,我們有經驗,我們傳播出去,這個我很開心,就 OK 了。
「穿山甲專訪」欄目是 Linux 中國社區推出的面向開源界、互聯網技術圈的重要領軍人物的系列採訪,將為大家介紹中國開源領域中一些積極推動開源,諳熟開源思想的技術人,並辨析其思考、挖掘其動因,揭示其背後所發生的事情,為關注開源、有志於開源的企業和技術人標出一條路徑。
取名為「穿山甲」寓意有二:取穿山甲挖掘、深入之意來象徵技術進步和表徵技術領袖的作用;穿山甲是珍稀保護動物,宣傳公益。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive