楠木軒

阿里雲蔣江偉:什麼是真正的雲原生?

由 沈建伏 發佈於 科技

圖片來源@視覺中國

文 | 阿里雲,作者 | 蔣江偉(阿里巴巴合夥人、阿里雲高級研究員)

而今,雲原生成了耳熟能詳的熱門詞,似乎不提雲原生就落伍了,加入CNCF也成了雲廠商引以為傲的技術優勢。

我們也看到各種雲原生的定義,有來自CNCF的“微服務+容器+持續交付+DevOps”,也有來自不同雲廠商的説法。2020年9月,阿里雲成立了雲原生技術委員會,今天我就從雲計算的初心嘗試談談什麼是真正的雲原生。

狹義的雲原生

讓我們先回顧雲原生的由來。

雲計算興起之後,以Docker為代表的容器浪潮,席捲業界,以DevOps和標準化交付而廣受青睞。在此背景下,Google創造性地提出了雲原生的概念,併發布了開源編排工具Kubernetes,從統一部署和標準化的角度切入,其後更成立了CNCF基金會,成功地殺出了一片天地。

2020年12月,CNCF大使Ian Coldwater在社交媒體上説:“Kubernetes現已棄用了對Docker的支持。您需要注意這一點,並作好相應的規劃。這會搞壞您的集羣。”

這説明雲原生戰略獲得了歷史性的進展。從這個角度來看,將雲原生等同於容器和服務網格,是早期對雲原生狹義的理解。

廣義的雲原生

那麼,什麼是廣義的雲原生呢?因雲而生的軟件、硬件、架構,就是真正的雲原生。

我們認為,雲原生更多應該從客户應用的視角來看,部署到雲上的應用,必須用到了只有大規模公共雲實踐才能提供的三類能力的一類或多類,即彈性、API自動化部署和運維等特性;服務化的雲原生產品,如RDS、EMR等;因雲而生的軟硬一體化架構。這,就是雲原生。

首先,雲原生應用是相對線下傳統企業IT物理機上的環境而言,要用雲的方式來部署和管理應用,充分利用雲的供應效率,要全球部署、即開即用、按量付費。

客户就近獲取雲的能力,就是所謂彈性,我們去年出過一本書,書名叫《彈性計算 無處不在的算力》,講的就是背後的原理,要具備這種極致的彈性才是雲原生。在雲上提供的Kubernetes,是通過自動化部署和運維的API標準化,實現了雲原生。

其次,今天我們已經看到雲原生數據庫、雲原生大數據、雲原生容器、雲原生中間件、雲原生安全等等概念,這都是在雲上可以隨意獲取的服務化雲原生產品,是傳統線下沒有的服務,有助於獲得性能和成本上的加強,這就是雲原生。

特別值得一提的是以神龍架構為代表的軟硬一體虛擬化。虛擬化經歷了純軟件虛擬化、通用硬件虛擬化、到現在的軟硬一體化虛擬化。

通過計算存儲的分離,使用專用的神龍芯片,對虛擬化進行加速,從而達到超越物理服務器的高性能。作為雲計算架構的底層,所有中間件和應用層都能從中獲得性能的收益,而無需進行任何代碼和架構的修改。

此外,神龍架構支撐的是同一套資源架構並池的資源能力,包括ECI(Serverless容器)、VM、裸金屬等,從而讓所有的資源能夠統一調度,進而實現最深的彈性。這也是業界第一次實現了統一架構和統一資源調度,被視為中國雲廠商的重大技術貢獻。

從這種意義上來説,神龍架構就是因雲而生,是典型的雲原生。簡單而言,如果沒有云計算的大規模部署場景,神龍的優勢就不能發揮得淋漓盡致。

所以,雲原生的初心是在雲上的原生,如果缺乏雲的基本特徵,必然不是雲原生。極端而言,如果你自己買了兩台服務器,放在辦公室,上面部署了容器,然後用Kubernetes來管理,那就不是雲原生,因為缺乏彈性、API自動化部署和運維的能力,連雲都不是。

CNCF更多的是倡導一個系統要用什麼組件進行架構,這樣才能實現互聯網架構和運維能力,實現快速迭代、靈活擴展、高效運維。而這些能力的發揮需要這些架構框架基於雲,兩者結合則為雲原生。

很多人會問,某個開源軟件是否是雲原生?這個要看它的架構。以開源數據庫為例,如果其架構上還是針對傳統的單機和小規模,那就不是雲原生;如果保持開源的接口兼容性,同時做了雲原生改造和重新設計,運維和管控都充分利用了雲的基礎能力,那就是雲原生的軟件和服務,如阿里雲的PolarDB數據庫。

多雲和混合雲加速了雲原生

歷史的發展總是曲折的,因為相信所以看見,也總是一波三折。在盤山公路上前行時,往往眼中只能看到有限的視野。

為達到更高的性價比、容錯和效率,業界產生了多雲和混合雲。多雲是客户將業務負載分別部署到不同的公共雲廠商,而混合雲更多是客户將業務負載部署到公共雲和專有云上。

多雲是競爭的產物,雖然亞馬遜和阿里雲一直認為用户用一家的雲就夠了。而混合雲的產生角度不同,它是為了滿足客户分步上雲的意願,同時滿足部分行業監管合規的需求,而構建的一種雲架構。

無論是多雲還是混合雲,雲廠商為了降低業務分佈式部署的難度,讓客户更容易接受,都會敦促客户對業務進行單元化改造,因為Kubernetes解決了標準化部署和遷移的問題。

同時除了Kubernetes和容器之外,往往涉及到使用公共雲帶來的彈性、加速等等服務能力,以及數據庫、大數據、音視頻等系統的雲原生改造。可見,Kubernetes加速了狹義的雲原生能力。

雲原生芯片

從計算芯片的角度而言,雲計算帶來了全新的應用場景,從而對CPU提出了新的需求,也就是雲原生芯片。

比如阿里雲的神龍芯片,就是雲原生芯片。它是整個設備的核心,因為通過它可以讓神龍服務器完完全全具有虛擬機的特性,包括虛擬機的接口。

基於神龍芯片的神龍MOC卡在整個架構中具有重要作用,它具備豐富的管理接口和對外數據接口,可以幫助我們實現彈性裸金屬服務器具備的這些功能。

CPU的多元化正在逐漸成為現實。首先是英特爾的對手AMD的崛起,雖然都是x86體系,但其芯片在性價比高之外,性能和特性也突飛猛進;其次,x86架構之外的發展非常迅猛,除Ampere的ARM服務器芯片外,自研的ARM體系正成為很多雲廠商的選擇。

AWS的Graviton 2自研芯片使用64位ARM Neoverse內核定製而成,設計思路是多核加每核單Thread負載,每個內核都旨在通過儘可能多的、完全獨立的內核來交付實際工作負載,力圖成為最節能的處理器。

微軟也在設計一款用於數據中心的ARM處理器,這是微軟的重大戰略舉措,微軟認為,自己的芯片更適合某些需求,更具成本和性能優勢。

雲原生CPU正呈現一些共有的特性:主頻不需要特別高、功耗要特別低、獨立運行的核、多核架構能更好地支持服務網格的應用、有成熟的軟件生態等等。

用雲原生的思維用好雲原生架構

對於雲計算的用户來説,理解什麼是雲原生尤為重要。不是簡單地使用容器來定義自己的系統,而是在設計、開發、部署等週期中,使用原汁原味的雲原生系統,將會帶來巨大的競爭優勢,充分享受雲計算的紅利。

雲原生不僅是實踐,更是一種理念,帶來的是時代變革。開發人員的開發環境也要生在雲上、長在雲上。使用類似無影這樣的遠程工具,讓產品設計文檔、開發調試環境、部署工具、測試過程、POC驗證、資源消費等等,全部基於雲來進行。

所以,雲原生帶來的是思維的變化,是文化的變化,是新時代的生產力,遠遠超越了CNCF定義的Kubernetes標準接口,是未來使用雲的標準方式。

什麼是真正的雲原生

我們很幸運,我們正親歷一個邁入雲時代的歷史性進程。

多年以後,新一代的新新人類,他們會更幸運,他們接觸的一切計算環境都是雲原生的。他們天生就會認為,雲計算資源是無處不在、取之不盡、用之不竭的,他們不會關心雲資源在哪裏、有多少。就像今天我們使用自來水一樣,沒有人會費勁心思考慮水從哪裏來。

因雲而生的軟件、硬件、架構,就是真正的雲原生;因雲而生的技術,就是雲原生技術。