解读云原生基础设施
作者 | 易立? 阿里云資深技術專家
導讀:云原生是云計算領域的熱點之一。就像 “一千個人眼里有一千個哈姆雷特”,大家對"云原生"的定義也見仁見智。本文將介紹云原生應用架構和生命周期管理的進化方向。
概述
CNCF- 云原生計算基金會對于“云原生”的定義如下 :
“云原生技術有利于各組織在公有云、私有云和混合云等新型動態環境中,構建和運行可彈性擴展的應用。云原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式 API。
這些技術能夠構建容錯性好、易于管理和便于觀察的松耦合系統。結合可靠的自動化手段,云原生技術使工程師能夠輕松地對系統作出頻繁和可預測的重大變更。
云原生計算基金會(CNCF)致力于培育和維護一個廠商中立的開源生態系統,來推廣云原生技術。我們通過將最前沿的模式民主化,讓這些創新為大眾所用?!?/p>
在我們的理解中,云原生計算包含三個維度的內容:
-
可編程的、動態的、彈性基礎設施:支持公共云、專有云、邊緣計算等不同環境。
-
分布式應用架構:具備松耦合、可彈性擴展、高容錯性等特點。
-
創新的應用開發、交付方式:基于自動化、可觀測、可管理的軟件交付流程,加速創新效率的同時保障系統穩定性。
接下來將以系列文章的形式,和大家分享阿里云容器服務團隊在云原生計算領域的探索和思考。本文主要聚焦在云原生基礎設施。
本系列文章:
- 第一篇 - 云原生基礎設施
- 第二篇 - 云原生軟件架構
- 第三篇 - 云原生應用交付與運維體系
云原生基礎設施
Gartner 將云原生基礎設施劃分成四大類:
我們可以看到這幾類基礎設施,計算單元的粒度越來越細,也越來越多體現的云原生的特質:
-
模塊化程度越來越高?- 自包含的應用打包方式,應用與底層物理基礎設施解耦。
-
自動化運維程度越來越高?- 自動化的資源調度和彈性伸縮能力,用戶將關注點逐漸聚焦到應用自身。
-
彈性效率越來越高?- 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 也引入了一些新的技術挑戰,比如冷啟動會導致應用響應延遲,按需建立數據庫連接成本高等等,需要平臺能力的持續增強。
云原生之路
企業上云之路,要根據自己的業務需求,技術能力和組織結構來選擇合適的路徑。
我們可以將遷移之路分為 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 架構的開發人員。
云原生基礎設施的未來趨勢
站在容器角度,我們看到未來云原生基礎設施的一些技術趨勢。
趨勢一:無處不在的計算催生新一代容器實現
在 1988 年,當時施樂 PARC 的首席科學家 Mark Weiser 提出了“Ubiquitous Computing”的概念,“在未來,計算將無處不在”。隨著互聯網的發展和進化,5G、AIoT 等新技術的涌現,隨處可見的計算需求已經成為現實,無處不在的計算正在改變我們的世界。
針對不同計算場景,容器運行時有不同的需求。比如在傳統數據中心,基于操作系統虛擬化的 RunC/Docker 容器可以很好地滿足大部分業務需求;如何提升更好的安全隔離能力?KataContainer,Firecracker, gVisor, Unikernel 等新技術層出不窮。但是沒有任何一款容器技術可以在安全隔離性、執行效率和通用性上都做到完美。我們在相當長的一個歷史階段,依然可以看到多種技術路線并存和多彩紛呈的競爭。OCI(Open Container Initiative)標準的出現,可以對不同的技術采用一致的方式進行容器生命周期管理,進一步促進了容器引擎技術的持續創新。
其中有幾個主要的趨勢:
-
基于 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 的概念模型,他們都是定義了開放的、標準化的訪問接口;向下封裝資源,向上支撐應用。
它們都提供了對底層計算、存儲、網絡、異構計算設備的資源抽象和安全訪問模型??梢愿鶕眯枨筮M行資源調度和編排。Linux 的計算調度單元是進程,調度范圍限制在一臺計算節點。而 Kubernetes 的調度單位是 Pod,可以在分布式集群中進行資源調度,甚至跨越不同的云環境。
在初期,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 戰略?!?/p>
此外,隨著 5G 時代的臨近,AIoT 應用快速發展,一個萬物智聯的時代開始到來。邊緣計算可以更好地鏈接物理世界和數字世界,為應用提供更低的網絡延遲、更高的網絡帶寬和更低的網絡成本。邊緣計算將成為企業云戰略的重要組成部分,我們需要有能力將智能決策、實時處理能力從云延展到邊緣和 IoT 設備端。
在 Gartner 發布的《2020 年基礎架構和運營的十大趨勢》中提出了分布式云的趨勢。隨著云平臺已經成為企業數字化轉型的創新平臺,一個變化隨之產生——云正在靠近它們。在分布式云中,公有云的服務能力可以位于不同的物理位置,而公共云平臺提供者會負責服務的運營、治理、更新和演變。
然而不同環境的基礎設施能力、安全架構的差異會造成企業 IT 架構和運維體系的割裂,加大云戰略實施的復雜性,增加運維成本。在云原生時代,以 Kubernetes 為代表的云原生技術屏蔽了基礎設施的差異性,推動了以應用為中心的混合云 / 分布式云架構的到來??梢愿玫刂С植煌h境下應用統一生命周期管理和統一資源調度。Kubernetes 已經成為企業多云管理的事實基礎。
2019 年 Google 推出 Anthos 多云應用平臺,其基礎就是 GKE K8s 托管服務。微軟在 Build 2020 會議上宣布了 Azure Arc 支持 Kubernetes 集群的預覽版。微軟 CEO 薩蒂亞·納德拉將 Azure Arc 描述為混合云計算的控制平面,可以統一管理云上、邊緣和 IDC 中運行的 Kubernetes 集群,以及 Windows 和 Linux 服務器實例。
阿里云容器服務 ACK 去年 9 月份發布了混合云 2.0 架構,提供了完備的混合云 K8s 管理能力。
-
首先 ACK 提供了統一集群管理能力,除了可以管理阿里云 K8s 集群之外,還可以納管用戶在 IDC 的自有 K8s 集群和其他云的 K8s 集群。利用統一的控制平面實現多個集群的統一的安全治理、可觀測性、應用管理、備份恢復等能力,比如利用日志服務、托管 Prometheus 服務,可以無侵入地幫助用戶對線上、線下集群有一個統一的可觀測性大盤。利用云安全中心,AHAS 可以幫助客戶在混合云的整體架構中發現并解決安全和穩定性風險。
-
此外,托管服務網格 ASM 提供統一的服務治理能力,結合阿里云云企業網 CEN、智能接入網關 SAG 提供的多地域、混合云網絡能力,可以實現服務就近訪問,故障轉移,灰度發布等功能。
-
ACK 也提供了統一的應用交付能力,通過 GitOps 方式可以將應用安全、一致、穩定地發布在多個不同的云環境中。配合網格 ASM 提供的流量管理能力,可以支持云容災、異地多活等應用場景,提升業務連續性。
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 等技術領域、聚焦云原生流行技術趨勢、云原生大規模的落地實踐,做最懂云原生開發者的公眾號?!?/p>
總結
- 上一篇: Dubbo-go 源码笔记(一)Serv
- 下一篇: 双十一购物节,Nacos 1.4.0 +