應雲而生,原力覺醒——解讀雲原生基礎設施

雲原生是雲計算領域的熱點之一。就像 “一千個人眼裏有一千個哈姆雷特”,大家對"雲原生"的定義也見仁見智。在CNCF-雲原生計算基金會的定義中 :

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

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

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

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

  1. 可編程的、動態的、彈性基礎設施

    支持公共雲、專有云、邊緣計算等不同環境

  2. 分佈式應用架構

    具備松耦合、可彈性擴展、高容錯性等特點

  3. 創新的應用開發、交付方式

    基於自動化、可觀測、可管理的軟件交付流程,加速創新效率的同時保障系統穩定性

本系列將和大家分享阿里雲容器服務團隊在雲原生計算領域的探索和思考。我們今天將聚焦在雲原生基礎設施。

雲原生基礎設施

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

分類 IaaS
Infrastructure as a Service
CaaS
Container as a Service
Serverless容器 fPaaS/FaaS
Function PaaS/Function as a Service
代表產品 彈性計算 - ECS K8s服務 - ACK Serverless K8s - ASK
彈性容器實例 - ECI
函數計算 - FunctionCompute
虛擬化技術 硬件虛擬化 操作系統虛擬化 - 容器 MicroVM 容器或應用運行時虛擬化
應用交付 虛擬機鏡像
配合自動化腳本
容器鏡像 容器鏡像 應用代碼
應用兼容性
靈活性
擴容單位 虛擬機 Pod Pod 函數實例
彈性效率 分鐘級 秒級 秒級 毫秒級

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

  1. 模塊化程度越高 - 自包含的應用打包方式,應用與底層物理基礎設施解耦
  2. 自動化運維程度越來越高 - 自動化的資源調度和彈性伸縮能力,用戶將關注點逐漸聚焦到應用自身。
  3. 彈性效率越來越高 - VM可以實現分鐘級擴容;容器可以實現秒級擴容;函數可以做到毫秒級擴容。
  4. 故障回覆能力越來越高 - 隨着系統自愈性的增強,大大簡化了應用架構容錯的複雜性。

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

應“雲”而生

經濟學家亞當·斯密提出:分工是社會發展的必然,而且分工將極大的提高生產效率。從經濟學的角度來講,雲計算是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也存在自身的侷限性:

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

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

  3. 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的概念模型,他們都是定義了開放的、標準化的訪問接口;向下封裝資源,向上支撐應用。

它們都提供了對底層計算、存儲、網絡、異構計算設備的資源抽象和安全訪問模型。可以根據應用需求進行資源調度和編排。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戰略。”

此外,隨着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管理能力。

  1. 首先ACK提供了統一集羣管理能力,除了可以管理阿里雲K8s集羣之外,還可以納管用戶在IDC的自有K8s集羣和其他雲的K8s集羣。利用統一的控制平面實現多個集羣的統一的安全治理、可觀測性、應用管理、備份恢復等能力。比如利用日誌服務、託管Prometheus服務,可以無侵入的方式幫助用戶對線上、線下集羣有一個統一的可觀測性大盤。利用雲安全中心,AHAS可以幫助客戶在混合雲的整體架構中發現並解決安全和穩定性風險。
  2. 此外託管服務網格ASM提供統一的服務治理能力,結合阿里云云企業網CEN、智能接入網關SAG提供的多地域、混合雲網絡能力,可以實現服務就近訪問,故障轉移,灰度發佈等功能。
  3. ACK也提供了統一的應用交付能力,通過GitOps方式可以將應用安全、一致、穩定地發佈在多個不同的雲環境中。配合網格ASM提供的流量管理能力,可以支持雲容災、異地多活等應用場景,提升業務連續性。

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

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

總結

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

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