解讀雲原生基礎設施

阿里巴巴雲原生發表於2020-11-04

1.png

作者 | 易立  阿里雲資深技術專家

導讀:雲原生是雲端計算領域的熱點之一。就像 “一千個人眼裡有一千個哈姆雷特”,大家對"雲原生"的定義也見仁見智。本文將介紹雲原生應用架構和生命週期管理的進化方向。

概述

CNCF- 雲原生計算基金會對於 “雲原生” 的定義如下 :

“雲原生技術有利於各組織在公有云、私有云和混合雲等新型動態環境中,構建和執行可彈性擴充套件的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和宣告式 API。

這些技術能夠構建容錯性好、易於管理和便於觀察的鬆耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。

雲原生計算基金會(CNCF)致力於培育和維護一個廠商中立的開源生態系統,來推廣雲原生技術。我們通過將最前沿的模式民主化,讓這些創新為大眾所用。”

在我們的理解中,雲原生計算包含三個維度的內容:

2.png

  • 可程式設計的、動態的、彈性基礎設施:支援公共雲、專有云、邊緣計算等不同環境。

  • 分散式應用架構:具備鬆耦合、可彈性擴充套件、高容錯性等特點。

  • 創新的應用開發、交付方式:基於自動化、可觀測、可管理的軟體交付流程,加速創新效率的同時保障系統穩定性。

接下來將以系列文章的形式,和大家分享阿里雲容器服務團隊在雲原生計算領域的探索和思考。本文主要聚焦在雲原生基礎設施。

本系列文章:

  • 第一篇 - 雲原生基礎設施 
  • 第二篇 - 雲原生軟體架構
  • 第三篇 - 雲原生應用交付與運維體系

雲原生基礎設施

Gartner 將雲原生基礎設施劃分成四大類:

3.png 4.png

我們可以看到這幾類基礎設施,計算單元的粒度越來越細,也越來越多體現的雲原生的特質:

  • 模組化程度越來越高 - 自包含的應用打包方式,應用與底層物理基礎設施解耦。

  • 自動化運維程度越來越高 - 自動化的資源排程和彈性伸縮能力,使用者將關注點逐漸聚焦到應用自身。

  • 彈性效率越來越高 - VM 可以實現分鐘級擴容;容器可以實現秒級擴容;函式可以做到毫秒級擴容。

  • 故障恢復能力越來越高 - 隨著系統自愈性的增強,大大簡化了應用架構容錯的複雜性。

為了更好地理解雲原生計算出現的時代背景,我們必須要理解雲端計算的經濟學基礎與核心競爭力所在。

應 “雲” 而生

經濟學家亞當·斯密提出:分工是社會發展的必然,而且分工將極大的提高生產效率。

從經濟學的角度來講,雲端計算是 IT 產業發展的必然階段。網際網路和移動網際網路時代的到來,加速了企業的數字化轉型。雲端計算可以提供時刻線上的服務能力,並滿足日益增長不斷變化的計算需求。此外,雲端計算將 IT 服務的固定成本投入轉化成為了可變成本,極大降低了創新成本。在咖啡館中,隨處可見創業的青年人圍坐在一起構畫未來,是網際網路和雲端計算讓夢想變得觸手可及。

雲端計算的規模經濟

雲端計算的經濟學基礎來自規模經濟。直觀上,批量採購,帶來更低的供應鏈成本;大型資料中心,降低運營成本。更重要的是,由於不同使用者不同時間的工作負載不同,可以利用規模優勢進行削峰填谷。結合自動化、智慧化的供應鏈和運營體系,進一步提升了硬體資產運營效率。雲端計算正如電力這樣的公共服務基礎設施,集中發電比每家每戶自建發電機,有更低的成本和更高的效率。

此外,雲端計算是典型的平臺型業務模式。隨著規模的增長,會產生網路效應。提供為企業提供產品 / 服務的 ISV 與 SI,會更加青睞於那些擁有更多使用者的雲平臺。而使用者會更加傾向於能夠提供豐富技術產品和服務支撐生態的雲平臺。隨著雲平臺的成長,將對使用者和生態產生更強的吸引力。

雲端計算的核心技術創新加速規模效應的形成。比如,計算資源池化與虛擬化技術,讓應用和底層硬體資源解耦。一方面提升資源利用率,降低計算成本;一方面提升了資源的彈性供給,彈性成為差異化雲基礎設施和傳統 IDC 的關鍵能力。

此外,在傳統 IT 中,軟體、硬體和服務由不同廠商分離交付。而云計算將軟體、硬體、服務一體化交付,極大降低了計算成本,提升了交付效率,提供了創新的技術能力。這裡面有幾個關鍵點:

  • 軟硬一體設計,可以針對規模和效能進行全棧優化,極大降低計算成本。而且由於雲端計算的規模效應,隨著產量的增加,邊際成本會拉低平均製造成本。全球主流雲廠商都在 IDC 設計、網路、晶片等方向加大自研投入。

  • 以 API 方式交付 IT 能力,一方面可程式設計的基礎設施極大提升了 IT 的敏捷性,更好地支援業務敏捷性;一方面 API 可以更加方便地被整合到三方服務商的解決方案中,進一步加速規模效應產生。

  • 隨著 IT 能力的規模化,一些資料化、智慧化的創新技術和業務模式逐漸形成。比如 ECS 當機預測和自動熱遷移,可以將虛擬機器的 SLA 提升到傳統需要硬體冗餘才能達到的穩定性標準;RDS 對資料庫的自動優化和問題診斷,無需 DBA 的人力過多介入。

雲原生的崛起

2013 年春,Docker 技術開源宣告了雲原生計算的序幕。Docker 公司創新地提出了應用打包規範 Docker 映象,它將應用及其所有依賴項打包,從而使應用可以在不同的計算環境之間快速、可靠地執行。容器技術提供了一個優雅的抽象,讓開發所需要的靈活性、開放性和運維所關注的標準化、自動化達成平衡。容器映象迅速成為了應用分發的工業標準。隨後 Google 開源的 Kubernetes 因為其優秀的開放性、可擴充套件性和活躍的社群,在容器編排之戰中脫穎而出,成為分散式資源排程和自動化運維的事實標準。Kubernetes 遮蔽了底層基礎架構的差異,提供了良好的可移植性,可以幫助應用一致地執行在不同的環境,包括資料中心、雲、邊緣計算等。

在技術上,容器技術徹底解耦了應用和執行時環境,可以幫助應用更加快速平滑地遷雲;容器輕量化、自包含的特性極大簡化了應用彈性,釋放雲的核心價值。此外,容器技術的標準化促進生態的分工和協同。基於 Kubernetes,社群開始構建上層的業務抽象。比如,服務網格 Istio、機器學習平臺 Kubeflow 以及無伺服器應用框架 Knative 等等。通過這樣的架構分層,進一步降低了技術門檻,加速了雲價值釋放。對於企業客戶而言,他們可以通過 Kubernetes 這樣的開放標準來設計企業的雲架構、避免廠商鎖定的顧慮,更好地支援多雲 / 混合雲。容器技術和生態的發展會加速雲端計算規模經濟形成。所有的雲廠商都在加大對容器技術領域的投入。

作為雲原生技術的演進,無伺服器計算(Serverless)進一步釋放了雲端計算的能力,將彈性伸縮、高可用、安全等需求由基礎設施實現。無伺服器計算抽象了執行時環境,讓開發人員可以將更多的精力放在應用程式的設計和優化上,而不是與基礎架構相關的配置和管理上;Serverless 應用可以迅速彈性伸縮,使用者無需進行容量規劃;採用按需付費的模型,使用者只按應用實際消耗的資源付費。在無伺服器計算中,應用邏輯被解耦為多個函式,每個函式可以通過事件驅動的方式觸發執行。執行粒度進一步細化,可以進一步提升彈性的效率,此外還把應用部署從原生程式碼(如 x86 指令集)提升到了高階語言層面,這給成本優化帶來了更多的空間(比如可以在 ARM 等低成本的計算資源上來執行 Python/NodeJS 指令碼)。這推動了進一步的社會分工,雲廠商可以通過規模化、集約化和技術創新實現計算成本的持續優化。

伯克利的論文《A Berkeley View on Serverless Computing》提出斷言:Serverless 計算將會成為雲時代預設的計算正規化。但是這條路還很漫長,現有無伺服器計算 FaaS 也存在自身的侷限性:

  • FaaS 應用架構和研發、交付流程和傳統應用相比有很大的改變。

  • 可移植性和廠商鎖定的顧慮,FaaS 依然缺乏標準,而且通常需要依賴大量的後端服務 (BaaS, Backend as a Service),這導致了為 AWS 開發的 Serverless 應用較難移植到阿里雲的平臺,或者在自己的資料中心中執行。

  • FaaS 也引入了一些新的技術挑戰,比如冷啟動會導致應用響應延遲,按需建立資料庫連線成本高等等,需要平臺能力的持續增強。

雲原生之路

企業上雲之路,要根據自己的業務需求,技術能力和組織結構來選擇合適的路徑。

5.png

我們可以將遷移之路分為 3 類:

  • Rehost 新託管 - 簡單地通過 lift-and-shfit 方式,將線下物理機替換成為雲上虛擬機器或者裸金屬例項,不改變原有的運維方式。

  • Re-platform 新平臺 - 利用託管的雲服務替換線下自建應用基礎設施,比如通過 RDS 資料庫服務替換自建 MySQL;通過容器服務,比如阿里雲 ACK 來取代自建 K8s 叢集。託管的雲服務通常提供更好的彈性、穩定性和自治運維能力,可以讓使用者關注於應用而非基礎設施管理。

  • Refactor/Re-architect 重構 / 新架構 - 包括單體應用的微服務架構改造,應用的容器化和 Serverless 化整體開發和交付架構改造。

從 Rehost、Re-platform 到 Re-architect,我們可以看到遷移的成本和複雜性在增加,但是敏捷性、彈性、可用性、容錯性等收益也在持續增加。雲原生已經成為勢不可擋的技術趨勢。在 CNCF 2020 年釋出的《雲原生開發狀態報告》中,我們可以看到全球有 470 萬雲原生開發者,佔全部後端開發者的 36%,其中包括 290 萬使用容器技術以及 330 萬使用 Serverless 架構的開發人員。

雲原生基礎設施的未來趨勢

站在容器角度,我們看到未來雲原生基礎設施的一些技術趨勢。

6.png

趨勢一:無處不在的計算催生新一代容器實現

在 1988 年,當時施樂 PARC 的首席科學家 Mark Weiser 提出了 “Ubiquitous Computing” 的概念,“在未來,計算將無處不在”。隨著網際網路的發展和進化,5G、AIoT 等新技術的湧現,隨處可見的計算需求已經成為現實,無處不在的計算正在改變我們的世界。

針對不同計算場景,容器執行時有不同的需求。比如在傳統資料中心,基於作業系統虛擬化的 RunC/Docker 容器可以很好地滿足大部分業務需求;如何提升更好的安全隔離能力?KataContainer,Firecracker, gVisor, Unikernel 等新技術層出不窮。但是沒有任何一款容器技術可以在安全隔離性、執行效率和通用性上都做到完美。我們在相當長的一個歷史階段,依然可以看到多種技術路線並存和多彩紛呈的競爭。OCI(Open Container Initiative)標準的出現,可以對不同的技術採用一致的方式進行容器生命週期管理,進一步促進了容器引擎技術的持續創新。

7.png

其中有幾個主要的趨勢:

  • 基於 MicroVM 的安全容器的佔比將逐漸增加,可以提供更高的安全隔離能力。虛擬化和容器技術的融合,已經成為了一個重要趨勢。在公共雲上,比如 AWS 的 Firecracker 已經成為 Lambda/Fargate 等 Serverless 雲服務的基礎設施;阿里雲的袋鼠容器引擎,已經成為 ECI/ASK 的基礎。

  • 基於軟硬一體設計的機密計算容器開始展露頭角。比如,阿里雲安全、系統軟體、容器服務團隊和螞蟻可信原生團隊共同推出了面向機密計算場景的開源容器執行時技術棧 inclavare-containers 支援基於 Intel SGX 機密計算技術的機密容器實現,如螞蟻的 Occlum,開源社群的 Graphene 等 Libary OS。降低機密計算的技術門檻,簡化可信應用的開發、交付和管理。

  • OS 的虛擬化創新也從未停步,從 Linux 4.5 核心開始 cgroup v2 介面在逐漸成熟,將進一步完善了資源隔離性。Docker 也釋出了 rootless 模式,可以更好利用 Linux 作業系統的安全能力來提升容器的安全性。

  • WebAssembly 是新一代可移植、輕量化、應用虛擬機器,在 IoT,邊緣計算,區塊鏈等場景會有廣泛的應用前景。在伺服器端,WebAssembly 是容器的顛覆者還是同盟者?大家會有不同的觀點。個人比較傾向於後者,WASM/WASI 可以成為一個跨平臺的容器實現技術。近期 Solo.io 推出的 WebAssembly Hub 就是將 WASM 應用通過 OCI 映象標準進行統一的管理和分發,可以很好地應用在 Istio 服務網格生態中。

趨勢二:雲原生作業系統開始浮現

Kubernetes 已經成為雲時代的作業系統。我們可以對比一下經典的 Linux 和 Kubernetes 的概念模型,他們都是定義了開放的、標準化的訪問介面;向下封裝資源,向上支撐應用。

8.png

它們都提供了對底層計算、儲存、網路、異構計算裝置的資源抽象和安全訪問模型。可以根據應用需求進行資源排程和編排。Linux 的計算排程單元是程式,排程範圍限制在一臺計算節點。而 Kubernetes 的排程單位是 Pod,可以在分散式叢集中進行資源排程,甚至跨越不同的雲環境。

9.png

在初期,Kubernetes 上主要執行著無狀態的 Web 應用。隨著技術的成熟和社群的發展,我們看到更多的有狀態應用和大資料 /AI 應用負載逐漸遷移到 K8s 上。目前企業的大資料業務還是被 YARN 等排程技術主導,但是 K8s 已經在大資料社群得到更多的關注。Flink、Spark 等開源社群和一系列商業公司如 Cloudera、Databricks、星環都開始加大對 K8s 的支援力度。

統一技術棧提升資源利用率:多種計算負載在 K8s 叢集統一排程,可以有效提升資源利用率。Gartner 預測 “未來 3 年,70% AI 任務執行在容器和 Serverless 上。” AI 模型訓練和大資料計算類工作負載需要 K8s 提供更低的排程延遲、更大的併發排程吞吐和更高的異構資源利用率。針對這些挑戰,華為推出了 Volcano 專案,提供了一個針對資料計算類任務的獨立排程器。阿里雲在和 K8s 上游社群共同合作,在 Scheduler V2 framework 上,通過擴充套件機制增強 K8s 排程器的規模、效率和能力,具備更好的相容性,可以更好地支撐多種工作負載的統一排程。

統一技能棧降低人力成本:K8s 可以在 IDC、雲端、邊緣等不同場景進行統一部署和交付。雲原生提倡的 DevOps 文化和工具集可以有效提升技術迭代速度,整體上降低人力成本。

加速資料服務的雲原生化:由於計算儲存分離具備巨大的靈活性和成本優勢,資料服務的雲原生化也逐漸成為趨勢。容器和 Serverless 的彈性可以簡化對計算任務的容量規劃。結合分散式快取加速(比如 Alluxio 或阿里雲 Jindofs)和排程優化,也可以大大提升資料計算類和 AI 任務的計算效率。

阿里雲端計算平臺和容器服務團隊已經在多個領域共同探索雲原生大資料 /AI 場景的產品技術創新。

趨勢三:在雲端,Serverless 技術逐漸融入主流

除了 FaaS 的快速發展,Serverless 和容器技術也開始融合,尤其是得到了雲廠商的高度關注。通過 Serverless 容器,一方面可以根本性解決 K8s 自身的複雜性,讓使用者無需受困於 K8s 叢集容量規劃、安全維護、故障診斷等運維工作;另一方面進一步釋放了雲端計算的能力,將安全、可用性、可伸縮性等需求下沉到基礎設施實現,可以幫助雲廠商形成差異化競爭力。

阿里雲在 2018 年 5 月推出 ECI(Elastic Container Instance 彈性容器例項)、ASK (Alibaba Cloud Serverless Kubernetes) 等產品,並在 2019 年 2 月正式商業化。目前業界所有公有云廠商都推出了 Serverless 容器產品,除阿里雲 ASK/ECI 外,還包括 AWS Fargate, Azure ACI,華為 CCI,騰訊 EKS, GCP CloudRun 等。

在 AWS 的調研中,在 2019 年 40% 的 ECS(AWS 彈性容器服務)新客戶採用 ECS on Fargate 的 Serverless Container 形態。

Serverless 容器可以和 FaaS 形成良好的互補。Serverless 容器支援容器映象作為應用載體,支援各種型別應用,比如無狀態應用、有狀態應用、計算任務類應用等。大量使用者現有的應用無需修改即可部署在 Serverless Container 環境中。

在 Gartner 在 2020 年 Public Cloud Container Service Market 評估報告中把 Serverless 容器作為雲廠商容器服務平臺的主要差異化之一,其中將產品能力劃分為 Serverless 容器例項和 Serverless Kubernetes 兩類,這與阿里雲 ECI/ASK 的產品定位高度一致。

Gartner 在報告中也談到 Serverless 容器業界標準未定,雲廠商有很多空間通過技術創新提供獨特的增值能力,其對雲廠商的建議是:

  • 擴充套件 Serverless 容器應用場景和產品組合,遷移更多普通容器 workload 到 Serverless 容器服務。

  • 推進 Serverless 容器的標準化,減輕使用者對雲廠商鎖定的擔憂。

趨勢四:動態、混合、分散式的雲環境將成為新常態

上雲已是大勢所趨。但是對於企業客戶而言,有些業務由於資料主權和安全隱私的考慮,會採用混合雲架構。一些企業為了滿足安全合規、成本優化、提升地域覆蓋性和避免廠商鎖等需求,會選擇多個雲供應商。混合雲 / 多雲架構已經成為企業上雲的新常態。Gartner 指出,“到 2021,超過 75% 的大中型組織將採用多雲或者混合 IT 戰略。”

此外,隨著 5G 時代的臨近,AIoT 應用快速發展,一個萬物智聯的時代開始到來。邊緣計算可以更好地連結物理世界和數字世界,為應用提供更低的網路延遲、更高的網路頻寬和更低的網路成本。邊緣計算將成為企業雲戰略的重要組成部分,我們需要有能力將智慧決策、實時處理能力從雲延展到邊緣和 IoT 裝置端。

在 Gartner 釋出的《2020 年基礎架構和運營的十大趨勢》中提出了分散式雲的趨勢。隨著雲平臺已經成為企業數字化轉型的創新平臺,一個變化隨之產生——雲正在靠近它們。在分散式雲中,公有云的服務能力可以位於不同的物理位置,而公共雲平臺提供者會負責服務的運營、治理、更新和演變。

然而不同環境的基礎設施能力、安全架構的差異會造成企業 IT 架構和運維體系的割裂,加大雲戰略實施的複雜性,增加運維成本。在雲原生時代,以 Kubernetes 為代表的雲原生技術遮蔽了基礎設施的差異性,推動了以應用為中心的混合雲 / 分散式雲架構的到來。可以更好地支援不同環境下應用統一生命週期管理和統一資源排程。Kubernetes 已經成為企業多雲管理的事實基礎。

2019 年 Google 推出 Anthos 多雲應用平臺,其基礎就是 GKE K8s 託管服務。微軟在 Build 2020 會議上宣佈了 Azure Arc 支援 Kubernetes 叢集的預覽版。微軟 CEO 薩蒂亞·納德拉將 Azure Arc 描述為混合雲端計算的控制平面,可以統一管理雲上、邊緣和 IDC 中執行的 Kubernetes 叢集,以及 Windows 和 Linux 伺服器例項。

阿里雲容器服務 ACK 去年 9 月份釋出了混合雲 2.0 架構,提供了完備的混合雲 K8s 管理能力。

10.png

  • 首先 ACK 提供了統一叢集管理能力,除了可以管理阿里雲 K8s 叢集之外,還可以納管使用者在 IDC 的自有 K8s 叢集和其他雲的 K8s 叢集。利用統一的控制平面實現多個叢集的統一的安全治理、可觀測性、應用管理、備份恢復等能力,比如利用日誌服務、託管 Prometheus 服務,可以無侵入地幫助使用者對線上、線下叢集有一個統一的可觀測性大盤。利用雲安全中心,AHAS 可以幫助客戶在混合雲的整體架構中發現並解決安全和穩定性風險。

  • 此外,託管服務網格 ASM 提供統一的服務治理能力,結合阿里云云企業網 CEN、智慧接入閘道器 SAG 提供的多地域、混合雲網路能力,可以實現服務就近訪問,故障轉移,灰度釋出等功能。

  • ACK 也提供了統一的應用交付能力,通過 GitOps 方式可以將應用安全、一致、穩定地釋出在多個不同的雲環境中。配合網格 ASM 提供的流量管理能力,可以支援雲容災、異地多活等應用場景,提升業務連續性。

11.png

2019 年 6 月,阿里雲 ACK@Edge 邊緣容器釋出。邊緣 K8s 容器叢集中可以同時管理雲端 ECS 和邊緣 ENS 節點、以及 IoT 裝置。我們在 K8s 基礎之上,針對邊緣計算場景的特殊性,提供了單元化隔離和斷連自治、自愈和安全等增強能力。藉助 ACK@Edge,我們可以將一些需要低延遲處理的應用部署在邊緣節點實現就近訪問,比如,我們可以把 AI 模型預測和實時資料處理放置到邊緣,進行實時智慧決策;而將模型訓練,大資料處理等需要海量算力應用放到雲端。可以極大簡化雲邊端一體應用協同。

在 2020 年 5 月底,我們將 ACK@Edge 的核心元件開源 — OpenYurt,該專案的核心理念是『Extending your native Kubernetes to edge.』,在架構上保持了對原生 K8s 無侵入的設計,通過一系列元件和工具,提供了對邊緣計算場景良好的支援能力。推出該開源專案,一方面可以把我們在雲原生邊緣計算領域的積累回饋社群,另一方面我們希望加速雲端計算向邊緣延伸的程式,並和社群共同探討未來雲原生邊緣計算架構的統一標準。

總結

雲原生計算加速了應用和基礎資源的解耦,充分釋放雲的彈性;通過關注點分離,讓開發者關注業務價值,而複雜性下沉到基礎設施。對企業而言,雲原生計算可以幫助企業優化雲架構,最大化發揮雲價值。在後續的文章中,我們將繼續介紹雲原生應用架構和生命週期管理的進化方向。

阿里雲容器平臺團隊求賢若渴!社招技術專家/高階技術專家,base 杭州/北京/深圳。歡迎發簡歷到:jiaxu.ljx@alibaba-inc.com。

阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公眾號。”

更多原創文章乾貨分享,請關注公眾號
  • 解讀雲原生基礎設施
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章