簡介:雲原生是雲計算領域的熱點之一。就像 「一千個人眼裏有一千個哈姆雷特」,大家對"雲原生"的定義也見仁見智。本文將介紹雲原生應用架構和生命週期管理的進化方向。
作者 | 易立 阿里雲資深技術專家
導讀:雲原生是雲計算領域的熱點之一。就像 「一千個人眼裏有一千個哈姆雷特」,大家對"雲原生"的定義也見仁見智。本文將介紹雲原生應用架構和生命週期管理的進化方向。
CNCF- 雲原生計算基金會對於「雲原生」的定義如下 :
「雲原生技術有利於各組織在公有云、私有云和混合雲等新型動態環境中,構建和運行可彈性擴展的應用。雲原生的代表技術包括容器、服務網格、微服務、不可變基礎設施和聲明式 API。
這些技術能夠構建容錯性好、易於管理和便於觀察的鬆耦合系統。結合可靠的自動化手段,雲原生技術使工程師能夠輕鬆地對系統作出頻繁和可預測的重大變更。
雲原生計算基金會(CNCF)致力於培育和維護一個廠商中立的開源生態系統,來推廣雲原生技術。我們通過將最前沿的模式民主化,讓這些創新爲大衆所用。」
在我們的理解中,雲原生計算包含三個維度的內容:
接下來將以系列文章的形式,和大家分享阿里雲容器服務團隊在雲原生計算領域的探索和思考。本文主要聚焦在雲原生基礎設施。
本系列文章:
Gartner 將雲原生基礎設施劃分成四大類:
我們可以看到這幾類基礎設施,計算單元的粒度越來越細,也越來越多體現的雲原生的特質:
爲了更好地理解雲原生計算出現的時代背景,我們必須要理解雲計算的經濟學基礎與核心競爭力所在。
經濟學家亞當·斯密提出:分工是社會發展的必然,而且分工將極大的提高生產效率。
從經濟學的角度來講,雲計算是 IT 產業發展的必然階段。互聯網和移動互聯網時代的到來,加速了企業的數字化轉型。雲計算可以提供時刻在線的服務能力,並滿足日益增長不斷變化的計算需求。此外,雲計算將 IT 服務的固定成本投入轉化成爲了可變成本,極大降低了創新成本。在咖啡館中,隨處可見創業的青年人圍坐在一起構畫未來,是互聯網和雲計算讓夢想變得觸手可及。
雲計算的經濟學基礎來自規模經濟。直觀上,批量採購,帶來更低的供應鏈成本;大型數據中心,降低運營成本。更重要的是,由於不同用戶不同時間的工作負載不同,可以利用規模優勢進行削峯填谷。結合自動化、智能化的供應鏈和運營體系,進一步提升了硬件資產運營效率。雲計算正如電力這樣的公共服務基礎設施,集中發電比每家每戶自建發電機,有更低的成本和更高的效率。
此外,雲計算是典型的平臺型業務模式。隨着規模的增長,會產生網絡效應。提供爲企業提供產品 / 服務的 ISV 與 SI,會更加青睞於那些擁有更多用戶的雲平臺。而用戶會更加傾向於能夠提供豐富技術產品和服務支撐生態的雲平臺。隨着雲平臺的成長,將對用戶和生態產生更強的吸引力。
雲計算的核心技術創新加速規模效應的形成。比如,計算資源池化與虛擬化技術,讓應用和底層硬件資源解耦。一方面提升資源利用率,降低計算成本;一方面提升了資源的彈性供給,彈性成爲差異化雲基礎設施和傳統 IDC 的關鍵能力。
此外,在傳統 IT 中,軟件、硬件和服務由不同廠商分離交付。而云計算將軟件、硬件、服務一體化交付,極大降低了計算成本,提升了交付效率,提供了創新的技術能力。這裏面有幾個關鍵點:
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 也存在自身的侷限性:
企業上雲之路,要根據自己的業務需求,技術能力和組織結構來選擇合適的路徑。
我們可以將遷移之路分爲 3 類:
從 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)標準的出現,可以對不同的技術採用一致的方式進行容器生命週期管理,進一步促進了容器引擎技術的持續創新。
其中有幾個主要的趨勢:
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 場景的產品技術創新。
除了 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 容器業界標準未定,雲廠商有很多空間通過技術創新提供獨特的增值能力,其對雲廠商的建議是:
上雲已是大勢所趨。但是對於企業客戶而言,有些業務由於數據主權和安全隱私的考慮,會採用混合雲架構。一些企業爲了滿足安全合規、成本優化、提升地域覆蓋性和避免廠商鎖等需求,會選擇多個雲供應商。混合雲 / 多雲架構已經成爲企業上雲的新常態。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 管理能力。
2019 年 6 月,阿里雲 [email protected] 邊緣容器發佈。邊緣 K8s 容器集羣中可以同時管理雲端 ECS 和邊緣 ENS 節點、以及 IoT 設備。我們在 K8s 基礎之上,針對邊緣計算場景的特殊性,提供了單元化隔離和斷連自治、自愈和安全等增強能力。藉助 [email protected],我們可以將一些需要低延遲處理的應用部署在邊緣節點實現就近訪問,比如,我們可以把 AI 模型預測和實時數據處理放置到邊緣,進行實時智能決策;而將模型訓練,大數據處理等需要海量算力應用放到雲端。可以極大簡化雲邊端一體應用協同。
在 2020 年 5 月底,我們將 [email protected] 的核心組件開源 — OpenYurt,該項目的核心理念是『Extending your native Kubernetes to edge.』,在架構上保持了對原生 K8s 無侵入的設計,通過一系列組件和工具,提供了對邊緣計算場景良好的支持能力。推出該開源項目,一方面可以把我們在雲原生邊緣計算領域的積累回饋社區,另一方面我們希望加速雲計算向邊緣延伸的進程,並和社區共同探討未來雲原生邊緣計算架構的統一標準。
雲原生計算加速了應用和基礎資源的解耦,充分釋放雲的彈性;通過關注點分離,讓開發者關注業務價值,而複雜性下沉到基礎設施。對企業而言,雲原生計算可以幫助企業優化雲架構,最大化發揮雲價值。在後續的文章中,我們將繼續介紹雲原生應用架構和生命週期管理的進化方向。
阿里雲容器平臺團隊求賢若渴!社招技術專家/高級技術專家,base 杭州/北京/深圳。歡迎發簡歷到:[email protected]。
「阿里巴巴雲原生關注微服務、Serverless、容器、Service Mesh 等技術領域、聚焦雲原生流行技術趨勢、雲原生大規模的落地實踐,做最懂雲原生開發者的公衆號。」
原文鏈接:https://developer.aliyun.com/article/777599?
本文內容由阿里雲實名註冊用戶自發貢獻,版權歸原作者所有,阿里雲開發者社區不擁有其著作權,亦不承擔相應法律責任。具體規則請查看《阿里雲開發者社區用戶服務協議》和《阿里雲開發者社區知識產權保護指引》。如果您發現本社區中有涉嫌抄襲的內容,填寫侵權投訴表單進行舉報,一經查實,本社區將立刻刪除涉嫌侵權內容。