Kubernetes正變得“無聊”,雲原生是雲計算領域的開源運動

雲原生是現在的熱門技術趨勢,很多開發者都對由此而興起的一衆技術十分追捧,但推及到落地實踐環節,大部分企業還都處於探索階段。雲原生發展到現在已經不是普及的問題,而是落地的問題了。本文,InfoQ有幸採訪到了靈雀雲CTO陳愷,聽他分享對雲原生各項技術發展現狀和趨勢的想法。

雲原生不是普及問題,更多是落地問題

單就某一種技術的概念普及來說,可能並沒有什麼難點。在科技發展的過往數十年中,技術本身歷經了數次更迭,開發者對新興技術的接受度還是比較高的。隨着CNCF社區的發展,開發者對於雲原生這一概念基本達成了理解和共識,普及並不是非常難的事情,而難點在於落地。

採訪中,陳愷表示,不同技術的落地難度也不一樣,容器是相對來說比較簡單的,對應用進行容器化並運行在Kubernetes上就可以了,目前Kubernetes的核心部分已經趨於成熟,從去年年底,很多開發者就開始說Kubernetes正在變得boring。這有幾層意思:

第一,核心的技術變更開始變慢,這是向好的跡象,一方面表明技術已經成熟,另一方面定位和邊界非常清晰,哪些東西放在覈心裏面,哪些東西通過擴展去做非常明確;第二,創新仍在持續,但創新會轉移到技術棧的更上層;第三,Kubernetes會變得無處不在,人們會對它習以爲常。

Kubernetes核心社區主要致力於三個主要目標:第一,持續提升核心技術棧的穩定性、易用性、可擴展性;第二,將更多的技術集成到以 Kubernetes 爲核心的 “雲原生技術棧”;第三,將“雲原生技術棧” 擴展到更廣泛的應用場景。

此外,CNCF社區正在將更多的技術集成到Kubernetes的生態,越來越多的應用場景和技術會被推到Kubernetes中,虛擬機可以用K8s管,數據中心裏面承載的內容可以用K8s管,Serverless基於K8s實現等。

但是,DevOps和微服務改造都不是那麼容易。具體來說,DevOps涉及文化、組織架構等與人相關的因素。微服務架構改造則涉及重新開發、重構、重寫等問題,如果是核心業務改造,風險又會非常大。

陳愷補充道,微服務架構本質上是以運維的複雜度爲代價去換取敏捷性,這時候要考慮企業是否真的有敏捷性需求,如果答案是否定的,就不要引入更多的複雜度。如果答案是肯定的,需要引入複雜度,那麼如何管理多出來的複雜度,就是我們一直討論微服務治理的原因。微服務治理不只是Service Mesh或者Spring Cloud,它需要一個完整的基礎設施去支撐。

微服務最大的挑戰是引入運維的複雜度,所以自動化運維非常重要,尤其是可觀測性。在微服務後面需要各種後端數據服務,如何管理後端的數據服務,把這些服務暴露給應用,是要考慮的問題。

最後,聚焦到微服務內部,服務和服務之間的連接和通訊治理,這是狹義上的微服務治理。這個問題的解決方案現在有一個很時髦的名詞叫Service Mesh,微服務治理進入到後Kubernetes時代。早期,微服務作爲一個需求、一個用例在推動容器和Kubernetes的發展,當Kubernetes變成標準之後,它會反過來驅動,重新定義微服務治理的最佳實踐。

在陳愷看來,如今的雲原生已經在業界達成共識:如果基於Kubernetes平臺做微服務治理,ServiceMesh就是最佳實踐。在數據層面,Envoy差不多是一個標準,各種選型包括API等都會傾向於使用Envoy,因爲其對標準的支持力度最大。在控制層面,雖然還沒有形成所謂的標準,但Istio也是目前唯一的選擇,未來是不是會出現更多方案是值得期待的。總體來說,如果需要調整業務代碼和架構,改造過程就會比較困難。因此,陳愷建議對於新技術有必要先想清楚再挑一部分慢慢沉澱,直接大刀闊斧的改革不是很有必要。

Serverless的標準化問題

自從伯克利犀利斷言:Serverless 計算將會成爲雲時代默認的計算範式,並取代 Serverful (傳統雲)計算模式,因此也就意味着服務器 - 客戶端模式的終結,這一技術的發展動態時刻被關注,但在過去一年,這項技術一直沒有在標準層面有所突破,這讓很多企業和開發者有所顧慮。

採訪中,陳愷表示,目前絕大多數Serverless的應用場景都運行在Lambda之上。對國內的企業而言,公有云其實本身就是一道檻,在公有云之上使用Serverless架構又是另一道檻,因此其落地會比較困難。陳愷表示,目前企業對於on premise的Serverless架構還是很有興趣的。

首先,Serverless從個人開發者角度來看是沒有服務器的,從另外一個角度來說肯定是有服務器的,只是公有云廠商在負責服務器,如果轉換爲私有云,服務器真實可見。

其次,Serverless的可擴展性規模是從0到無限,這是很大的亮點。公有云上可以這麼做,私有環境假設只有一臺機器,是無法實現這樣的可擴展性的,這是相對於公有云的侷限性。

最後,就使用場景上而言,私有云相對公有云會有一些弱勢,但是目前看來,企業對於私有云場景下使用Serverless有很大興趣,所以社區也好,廠商也好,都對此有投入。

從技術上來說,開發者已經慢慢達成共識:K8s可以編排容器、虛擬機等一切東西,當然也可以用來編排函數;Docker本身可以打包應用,當然也可以用來打包函數;K8s可以作爲應用運行時,當然也可以作爲容器的運行時。這個邏輯看上去比較合理,所以這些技術最後都會往K8s上靠。

FaaS最佳實踐

Serverless本身的概念比函數計算廣很多,函數本身只解決計算問題,數據的問題還是需要通過數據服務來解決,這些服務在公有云上可以很容易的獲取,很難說這其中的哪一個是最佳實踐,還是需要結合具體用例、使用場景和需求來選擇,函數計算也無法滿足所有企業的所有場景訴求。

陳愷表示,函數計算本身的好處就是在有事件觸發時,可以迅速擴展,對於負載不可預測類應用非常適合,函數計算的付費原則是按需計費,不使用時不會產生任何費用。此外,一些做數據處理的在編程模式上也會比較適合,一些在不同系統中起到連接作用的功能也會比較適合。

雲原生實踐思考:先上雲還是雲原生?

整個雲原生領域的創新仍在持續,這種創新開始轉移到技術棧的上層。陳愷表示,我們會慢慢看到從這些技術當中沉澱出一個核心的雲原生技術棧,底層是Kubernetes,中間是ServiceMesh,往上是Serverless。Kubernetes解決的是部署管理的問題。ServiceMesh解決應用層面、網絡連接相關的問題。Severless把整個運行時都做了虛擬化、抽象。

在雲原生時代,很多企業希望藉助此技術實現數字化轉型,陳愷表示,數字化轉型最核心的是應用,最後承載企業價值的就是應用和軟件。但是光有軟件是不夠的,光有軟件不見得轉型成功,也不見得有什麼競爭力,關鍵的是軟件是如何設計、開發並交付的,能不能很快將價值傳遞出去,這是想通過軟件做的事情。在這一點上,雲原生是可以發揮作用的,因爲雲原生講的就是如何最大化利用其交付模式,併發揮雲計算的所有生產力,使得一系列應用從設計到開發、交付,再到管理的思維方式,將最佳實踐和技術結合在一起,讓應用最快傳遞價值。

目前,陳愷表示,傳統企業對此的接受程度還是挺高的,靈雀雲對於頭部客戶的覆蓋非常好,因爲大部分CIO也都很明白自己的痛點,最終需要軟件交付的能力。在過去,很多傳統企業可能都沒有屬於自己的軟件產品,甚至企業內部不配備專門的研發人員,大量使用第三方的標準化軟件。

如今, 在數字化轉型的壓力下,企業對IT產品有了明確的需求,需要開發、上線、運營自己的產品,對開發模式、迭代速度和頻率也與以前的需求完全不一樣,因爲現在的軟件產品已經變成了競爭性的場景,比如車聯網、自動駕駛、風控、營銷、互聯網金融等,如果實力不夠很可能導致相應業務的缺失,這就是Gartner提到的“以敏態爲主的應用”,這類應用的初衷就是做得更好,迭代更快,用戶體驗更好,纔可能帶來更多業務,這也是雲原生應用最開始落地的場景,這類應用最大的特點是屬於新型應用,沒有歷史包袱。

隨着技術不斷地深入,很多傳統企業都有大量的複雜傳統應用,開發模式依舊沒有改變,這時就要考慮如何對傳統應用進行改造,兼顧兩種類型的應用,即敏態和穩態應用。隨着時間的演進,企業願意把這些應用全面雲原生化。陳愷表示,此時,企業需要識別哪些應用適合進行雲原生改造,哪些不適合,對於適合的應用,也需要考慮改造步驟,如何循序漸進對技術進行選擇。

總結來看,雲原生應用架構要在企業IT環境落地,必須務實。陳愷提到了幾大需要遵循的原則:第一,並不是所有應用都需要做微服務的拆分,做微服務化,多種粒度的服務同時並存,是很正常的事情,甚至可以反過來考慮這件事情,默認的、缺省的應該從比較大的粒度開始,當真正有業務層面敏捷性需求時,再按照變更的邊界和優先級去逐步做微服務的拆分。

第二,當有敏捷性需求,一定要意識到微服務化之後會帶來運維的複雜度,所以做了微服務化一定要擁抱雲原生,將微服務應用遷移到Kubernetes平臺上,甚至在Kubernetes平臺上應該用Service Mesh對它做微服務治理。

第三,API在整個架構中起到非常重要的作用,一個應用即便不做微服務拆分、不改動技術架構,也可以做一些服務化的適配,把關鍵能力通過API暴露出來。通過 API 來實現內部集成和對外能力開放。

第四,需要做API治理,API治理一般通過API網關來實現,但可能不會只有一個API網關,可能有多個層級的API網關。一般來說,越往上,API網關的職能越偏向運營,越往下,API網關的職能越偏向技術。

在具體實踐中,關於先上雲再做雲原生改造,還是直接進行雲原生改造,靈雀雲接觸到的大部分客戶基本以私有部署爲主,會先從雲原生改造開始,上不了公有云的客戶也可以很好地使用容器等雲原生方面的能力。所有客戶上公有云,這會是一條長期且漫長的道路。爲了幫助這些企業更好得進行雲原生改造,靈雀雲今年6月底發佈了一站式雲原生應用賦能平臺Alauda Container platform (ACP)2.0的重大升級。這次升級是技術架構的重大升級,產品架構完全轉成Kubernetes原生架構。原來產品所有功能都遷移到新的架構上,同時把DevOps(Alauda DevOps)平臺和Service Mesh(ASM)在集羣和多租戶平臺上對齊,三個產品融合到Kubernetes原生的架構下面。

陳愷表示,在ACP的後續版本中,將持續引入更多Operators,一方面通過Operators來實現平臺自身的自動化部署、運維和升級。另一方面,讓客戶便捷地使用一些社區和其他廠商提供的成熟的Operators。基於Kubernetes 擴展機制,將運維知識編寫成 “面向應用的 Kubernetes 原生控制器”,從而將一個應用的整體狀態作爲 API 對象通過 Kubernetes 進行自動化管理。靈雀雲近期也推出了API層面的新產品——企業級API管理平臺Alauda API Management platform(AMP),它的定位是企業總的API網關,主要負責南北向的API治理,更偏運營,主要職責是API全生命週期管理、API能力開放運營(API Economy)、API治理。

2011年,Marc Andreessen 說“軟件正在吞噬世界”,這句話被無數人反覆說起。現在,開源軟件變成軟件交付的一種主要形式,也可能變成軟件標準制定的唯一方式。雲計算變成了主流,公有云甚至變成了主流。最近一兩年,人們開始討論雲原生。陳愷認爲,一定程度上,可以把雲原生看作是雲計算領域的開源運動。

嘉賓介紹:

陳愷,靈雀雲創始人兼CTO。曾任職微軟公有云Azure雲平臺核心創始成員及首席研發經理,是大規模計算、企業級雲平臺和雲原生領域全球頂級技術專家。在靈雀雲擔任CTO以來,帶領團隊打造了基於容器技術、以DevOps爲理念、面向微服務應用的企業級雲原生PaaS平臺,成功實現了從開源技術到商業價值的轉化。由陳愷帶領的靈雀雲技術團隊在開源領域的貢獻和產品化成果獲得了業內廣泛認可,培養出了一大批K8s、DevOps、Istio領域的技術人才。

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