輕舟已過萬重山:專訪網易雲陳諤
從炎熱的夏日中走入到錢塘江畔清涼的網易雲會客室,我見到了陳諤,開始這次「輕舟」之行。
說實話,初次近距離見到陳諤時,心中有點愕然,作為網易杭研的元老之一、網易雲基礎服務的領頭人,我竟然從他身上感到一點點靦腆和技術人員的質樸。聯想到之前網易雲這邊作為背景信息給出的個人介紹,這樣的一位領軍人物,居然自謙自己「對分散式系統設計開發、雲計算平台系統架構有一定的經驗和理解」,我不禁有些恍然。
我接觸和採訪過很多開源和互聯網公司的技術領袖,陳諤應該是我見過的最溫和而又不失自信的人之一,他的臉上總是浮現著內斂的笑容,讓我們在談話的一開始,就有了一個良好的氛圍。
受訪者(左):網易雲陳諤,採訪者(右):老王
網易云:千錘百鍊終成型
和很多互聯網公司推出的雲服務一樣,網易雲也是一個脫胎於內部實踐的雲服務。網易杭州研究院作為整個網易公司的技術攻堅力量和創新業務孵化團隊,隨著網易業務和規模的不斷的變化,杭州研究院面臨著非常大的壓力去做好基礎設施的相關工作。
隨著移動互聯網的到來,原本可以很好應對博客、遊戲等業務的 IT 基礎設施逐漸變得捉襟見肘,原本的資源調度能力無法處理好隨著新業務和新模式的快速增長和迭代而產生的需求和複雜度。IT 基礎設施成為了當時網易發展業務的新瓶頸。
為了能夠更好的服務網易內部的業務, 2012 年,網易杭州研究院組建了專門的雲平台產品部,來建設網易內部使用的雲計算平台,以應對移動互聯網到來而產生的更加複雜應用帶來的基礎設施需求。
隨著網易雲產品對內提供服務,規模上的問題被逐漸解決,但是,產品的研發模式也在不斷的迭代,網易內部開始不斷地實踐微服務架構。在這個過程中,陳諤感覺到,現有的 IaaS 產品和 PaaS 產品已經漸漸無法支撐來自微服務架構的複雜度,但在那時,雲原生理念和技術尚未成熟的時代,對於微服務的探索只能獨立踐行。網易雲針對性的提供了 CI/CD、分散式架構鏈路跟蹤、服務治理的工具,幫助用戶更好的去實踐微服務。
到了 2015 年 7 月,隨著 CNCF 的成立,這時陳諤發現,網易雲的很多產品和服務,和 CNCF 的理念是一致的或相似的,於是,網易雲決定將自己的探索和成果更好地結合社區的發展,向社區貢獻自己的努力,也吸納來自社區的營養,將網易雲的發展和開源社區的路線結合起來。
也正因為擁抱社區,網易雲很早就走上了 Kubernetes + Docker 的發展路線。談起對於 Docker 和 Kubernetes 的選擇,陳諤表示,網易雲選擇 Docker 和 Kubernetes 並不是偶然之下的決定。
實際上,早在 Docker 出現之前,網易雲已經開始使用 LXC 技術來進行更細粒度的資源分配,實現了類似的容器技術棧,在此過程中,陳諤及其團隊親歷了 LXC 技術在實施的過程中各種問題和技術缺陷帶來的困擾。而 Docker 的橫空出世使得整個雲計算領域眼前一亮。雖然網易雲自建的技術棧已經可以滿足當時及近期業務的需求,但作為具有技術遠瞻力的技術負責人,陳諤知道,相比於得到業界普遍看好的 Docker,自研的專屬技術棧的生態環境狹窄,技術人員的培養成本也居高不下。而另外一方面,Docker 的鏡像機制、分層文件系統機制,也使得之前在 LXC 技術棧裡面斬荊披棘的網易雲似乎看到容器技術發展的堂皇大道,使用 Docker 也就變得順理成章。因此,網易雲十分自然的就完成了從 LXC 向 Docker 的轉移。
我問及 Kubernetes 的選擇,陳諤笑了笑,他提到,網易雲對於 Kubernetes 的支持是非常早的,在早期 Kubernetes、Swarm、Mesos 尚三足鼎立的時候,網易雲就堅定的投入了 Kubernetes 生態。這一點和網易雲過去在微服務、容器編排方面的實踐是密不可分的。Kubernetes 解決了網易雲在過去運維過程中遇到的諸多問題:如何進行彈性伸縮、如何進行服務調度、如何使用配置來進行控制。Kubernetes 所提供的配置能力,特別適合於需要解決微服務架構編排問題的網易雲。
對於網易雲來說,他們並不是一個刻意追求新奇的團隊,相比於新興的技術,網易雲更在乎什麼能夠解決問題。顯然,對於微服務架構支持最好的 Kubernetes 成為最終之選。
企業云:只為解決客戶問題
網易雲和很多雲計算公司不同,沒有將目光全部投放在公有雲上,而是專註於為企業提供業務雲化的解決方案。網易雲也和容器雲廠商的定位不同,容器是網易雲的產品,更是網易雲的工具,因此網易雲雖然很早就應用了 Docker、Kubernetes 等技術,但是並沒有突出這些看起來非常時髦的技術名詞,而是根據企業需求,更多的將這些作為服務於上層的微服務產品的基礎。通過結合容器的網路方案、存儲方案等雲原生技術積累,網易雲希望更好的服務自己的客戶。
陳諤說,網易雲之所以選擇了企業雲的路線,更多是因為網易雲發現自身更適合於在雲原生領域深耕細作。與其在公有雲的紅海中去競爭,不如在雲原生領域去深入挖掘,提升技術和競爭力。這樣,就將競爭從 IaaS 層面,提升到了基於雲原生體系的 PaaS 層面,避開了紅海的競爭。同時,這種基於 Kubernetes 標準化的 PaaS 服務,其生命力也遠超普通的 IaaS 產品,Kubernetes 的設計使得它能夠消除廠商鎖定,基於其實現的 PaaS 服務可以運行在任何一家 Kubernetes 服務商的雲產品上。
陳諤還提到,作為一個面向企業提供解決方案的服務商,網易雲和其他的容器雲不同的是,更多是希望去靠近企業的 IT 的技術的認知,不會給企業造成過多的認知負擔和業務侵入性。在業務落地時,能夠根據企業的需要來不斷的完成落地,而不是從一開始就要求企業去實踐容器等,造成更大的負擔。如果不是企業的需求要做容器化的話,不會第一時間要求用戶完成容器化的遷移。但陳諤也發現,當用戶真正去實施微服務框架的時候,往往會考慮實施和部署容器化,這時,網易雲早已準備好的容器平台就可以很好的完成這部分的工作。
對於不希望進行容器化的企業,陳諤提到,網易雲針對於這些異構的環境,也提供了不同的解決方案,諸如支持裸金屬集群和虛擬機環境的 服務網格 等能力,可以幫助那些不打算做容器化的企業完成自己的工作。
網易雲希望自己的產品能夠基於客戶的 IT 策略來考慮,而不是將網易內部的實踐生搬硬套到客戶的業務中去。
DevOps 認知:陳諤的 DevOps 觀
在談到網易雲內部的 DevOps 實踐時,陳諤提到,在網易雲內部其實很早就開始進行了 DevOps 實踐。從 2014 年開始,網易雲內部就開始推行服務化的組織架構和協作方式。在網易雲內部,所有的工作都是介面先行,在網易雲看到的每一個界面,都是先有介面,後有界面的。每一個介面背後都對應著網易雲的一個服務以及對應的研發團隊。這樣從一開始,網易雲就不設立專門的應用運維團隊來負責業務的發布和上線,而是由各服務團隊自行完成業務的發布和上線。除了 IaaS 層面基礎設施的運維有專門的 SRE 團隊來負責以外,各服務的運維都由各自團隊自行來負責,這使得對應的團隊必須自行解決運維需求。而且,為了更好的協作,網易雲內部的所有的 API ,都會放在一個統一的 API 網關中,所有的用戶都可以藉助 API 來完成自己想要的操作,而無需進行 Web 界面的操作。
我們還談到了 DevOps 和容器化的關係,在過去的一段時間裡,宣傳上總是將二者聯繫起來。在陳諤看來,容器化和 DevOps 的關係實際上是相輔相成的。
在他看來,之所以 DevOps 會出現,核心是隨著企業業務的不斷服務化拆分、微服務架構的實施,中心化的運維成為瓶頸,這使得企業不得不去提升運維的能力,去招募更多的運維。但是基於企業成本的考慮,運維人員的數量終歸是有限的,因此有一些開發人員不得不兼任運維工作。但是,開發人員在運維方面的思路、關注點、風險意識上和傳統運維人員存在一定差異,基於這樣的考慮,需要一批工具來輔助開發人員進行運維工作,規範開發人員可以做的事情。在這樣的一個大背景下,容器技術應運而生了。他相信,即使沒有 Docker 公司搞出了容器化,也會有其他的公司來做出類似的產品,不同的只不過是各家的方案的優劣罷了。
輕舟微服務:幫助企業更好落地微服務
此次會見陳諤是在網易雲創峰會上,而此次大會濃墨重彩介紹的產品之一就是網易輕舟微服務。
輕舟微服務是網易雲在完成了基礎設施的 Docker、Kubernetes 等改造完成後,基於對業界的分析和研究後提出來的。出於標準化技術棧的考慮,網易雲最終啟動了輕舟微服務的項目,將現有的技術棧,打造成一個個獨立的標準化技術產品。到了 2018 年,在完成了對所有技術棧的標準化以後,將輕舟微服務發布了出來。
陳諤認為,異構系統整合,包括兼容、通信和系統間事務一致性,和多供應商建設,包括多團隊協作、軟體資產沉澱,是目前企業在建設在線業務中台過程中遇到的最大障礙,而網易輕舟微服務新品的發布,正是要通過服務網格、分散式事務框架 GTXS、全新 API 網關與原有輕舟產品的整合,完成全棧化在線中台技術體系升級,幫助企業完成業務架構的進化,支撐業務快速創新。
網易雲陳諤和老王
陳諤介紹,輕舟服務網格是基於 Istio 和 CNCF 的 Envoy 等主流開源技術構建,可以實現 Java、Python、NodeJS、Golang 和 PHP 等不同技術棧的兼容和通信,能夠與網易已有微服務框架 NSF 統一管控、互相發現、互相調用,並且支持容器、虛擬機和裸機部署,將異構系統的支持實現到了業界領先的程度。
在陳諤看來,輕舟微服務的推出,是網易雲內部的微服務能力的對外輸出,是網易雲內部技術能力的輸出體系,針對企業客戶,提供了一整套的技術方案,以及對應的諮詢服務和最佳實踐的指導,幫助先前沒有足夠能力獨力完成微服務化的企業,完成企業產品和服務的微服務化。
很多企業的 獨石應用 隨著企業的發展和產品的變遷,都面臨新的挑戰,而微服務化改造是企業所寄予眾望的一條發展路徑。但或因為微服務的技術儲備不足,或因為既有業務的歷史包袱過重,企業自行開發微服務體系不但耗時周期過長,而且可能因經驗不足而走了彎路,因此,網易雲在推出了輕舟微服務以後,贏得了不少企業用戶的關注。
在實際的使用過程中,輕舟的部署也幫助企業大幅度提升了新業務接入的效率和版本發布的效率。舉個例子來說,如果同時有數十個微服務的不同版本在開發,在傳統的模式下,就需要提供數十個測試環境來完成測試,但在輕舟下,就可以基於無侵入的流量染色功能重用一套測試環境,僅將測試流量路由至特定版本微服務,降低了環境的成本。
後記
由於我離開了中國電信好幾年了,近些年我對企業級產品和服務接觸並不太多。而這次的採訪,使得我對於一直以來缺少了解的網易雲和其產品有了更深刻的認識。顯然,網易雲在這場雲計算大潮中,找到了企業界真正的痛點,關注到了眾多企業的真實需求,這種深耕的思路,一方面讓網易雲支撐起來網易雲音樂、網易考拉等明星產品,另外一方面也使得網易雲在企業上雲和 IT 現代化方面不斷攻城略地,取得不菲的成果,這值得雲計算領域的細分廠商學習。
「穿山甲專訪」欄目是 Linux 中國社區推出的面向開源界、互聯網技術圈的重要領軍人物的系列採訪,將為大家介紹中國開源領域中一些積極推動開源,諳熟開源思想的技術人,並辨析其思考、挖掘其動因,揭示其背後所發生的事情,為關注開源、有志於開源的企業和技術人標出一條路徑。
取名為「穿山甲」寓意有二:取穿山甲挖掘、深入之意來象徵技術進步和表徵技術領袖的作用;穿山甲是珍稀保護動物,宣傳公益。
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive