微軟Radius平臺重構(gòu)現(xiàn)代應(yīng)用程序部署
微軟的 Azure 孵化團(tuán)隊(duì)日前推出一個(gè)叫 Radius 的新應(yīng)用平臺。Radius 平臺可用于在 Kubernetes、公共云和邊緣環(huán)境中運(yùn)行各種現(xiàn)代應(yīng)用程序。
Radius 是一個(gè)開源項(xiàng)目,最初支持的應(yīng)用程序運(yùn)行時(shí)包括Kubernetes、Azure和AWS,以后還會支持諸如谷歌云平臺等云環(huán)境。
Mark Russinovich 是微軟云平臺 Azure 的首席技術(shù)官,也是 Radius 的架構(gòu)師。Russinovich 與微軟執(zhí)行副總裁Scott Guthrie一起重構(gòu)了原先的 Windows Azure,使其成為一個(gè)引人注目的公共云平臺,可以叫板亞馬遜網(wǎng)絡(luò)服務(wù)(Amazon Web Services)。
Windows Azure當(dāng)時(shí)的愿景是為微軟.NET開發(fā)人員打造一個(gè)平臺即服務(wù)(platform-as-a-service)產(chǎn)品。但開源的興起和亞馬遜 EC2 的迅猛發(fā)展迫使微軟從頭開始重構(gòu) Windows Azure,以支持基礎(chǔ)設(shè)施和平臺服務(wù)。Russinovich和他的團(tuán)隊(duì)將 Azure 構(gòu)建為一個(gè)可擴(kuò)展的框架,可以支持未來可能添加到云服務(wù)組合中的各種服務(wù)。
Azure 的可擴(kuò)展性體現(xiàn)在一個(gè)多功能的控制平面上。Azure控制平面現(xiàn)在負(fù)責(zé)運(yùn)行虛擬機(jī)及部署在微軟公共云上的機(jī)器學(xué)習(xí)模型等等的所有功能。Azure控制平面還使微軟能夠?qū)⒖蓴U(kuò)展性能力擴(kuò)展到由 Azure Stack 支持的私有云和邊緣環(huán)境。
Azure 控制平面對 Radius有很大的 影響。兩者都具有高度的可擴(kuò)展性和可伸縮性。兩者的主要區(qū)別在于,Radius 是一個(gè)開源項(xiàng)目,主要是以一組容器或進(jìn)程的形式運(yùn)行,可選擇部署在 Kubernetes 中。Radius與 Azure 控制平面類似,也是為了和負(fù)責(zé)管理資源生命周期的獨(dú)立資源提供商的接軌,例如Azure 或 AWS 等。
Radius 配備了一組資源提供商,用于管理以容器形式打包的應(yīng)用程序。Radius 的初始版本中內(nèi)置了 Azure 和 AWS資源提供商。添加其他云提供商(如 GCP)則只需簡單地在 Radius 中創(chuàng)建和注冊一個(gè)新的資源提供商即可。
Radius 平臺的可擴(kuò)展層名為 UCP 或通用控制平面,名字起得恰如其分。UCP 與 Azure 一樣負(fù)責(zé)接受 API 請求,然后將其委托給 Kubernetes、Azure 或 AWS 等適當(dāng)?shù)馁Y源提供商。
這里的重點(diǎn)是 Radius 大量借鑒了 Azure 的可擴(kuò)展且可靠的資源管理方法。
將基礎(chǔ)架構(gòu)即代碼擴(kuò)展到應(yīng)用程序
Radius使得無論應(yīng)用程序部署在何處開發(fā)人員都可以對其進(jìn)行定義。Radius 支持利用 Azure Bicep 和 Terraform 這兩種流行的特定域語言(DSL)聲明應(yīng)用程序及其依賴關(guān)系。
使用 Azure Bicep 和 Terraform 聲明應(yīng)用程序是 Radius 的最佳設(shè)計(jì)決策之一。應(yīng)用程序及其依賴關(guān)系的定義沒有引入新的格式,因此消除了涉及學(xué)習(xí)新標(biāo)記語言的學(xué)習(xí)曲線。
Radius 平臺(圖:微軟)
微軟社區(qū)已經(jīng)非常熟悉 Azure Bicep了。Azure Bicep是一種特定域語言,用于使用聲明式語法部署 Azure 資源。用戶可以在 Bicep 文件中定義要部署到 Azure 的基礎(chǔ)架構(gòu),然后在整個(gè)開發(fā)生命周期中使用該文件重復(fù)部署基礎(chǔ)架構(gòu)。
Terraform 是一種流行的基礎(chǔ)架構(gòu)即代碼工具。Terraform 已成為聲明式管理云服務(wù)生命周期的事實(shí)標(biāo)準(zhǔn)。幾乎每個(gè)云提供商和基礎(chǔ)設(shè)施資源提供商都有 Terraform 模塊。
Radius 團(tuán)隊(duì)沒有做重新發(fā)明輪子的事,而是采用了 Bicep 和 Terraform 作為定義應(yīng)用程序的 DSL。雖然對 Terraform 提供商的支持尚未實(shí)現(xiàn),但已在 Radius 的路線圖上了。
Radius將開發(fā)者和運(yùn)營者的角色分開
Radius的核心功能之一是創(chuàng)建配方,可以將創(chuàng)建配方視為由企業(yè)中央IT團(tuán)隊(duì)定義和管理的服務(wù)目錄。Radius配方隱藏了底層服務(wù)的實(shí)現(xiàn),例如數(shù)據(jù)庫、消息隊(duì)列、存儲服務(wù)和緩存服務(wù)。
運(yùn)營團(tuán)隊(duì)則需要定義和發(fā)布抽象實(shí)現(xiàn)細(xì)節(jié)的配方。當(dāng)開發(fā)人員想要使用 SQL 數(shù)據(jù)庫時(shí),他不需要知道服務(wù)實(shí)際部署在哪里。他可以引用現(xiàn)有服務(wù),并在 Bicep 或 Terraform 定義中以聲明方式將其綁定到自己的應(yīng)用程序。這類似于開發(fā)人員在代碼中導(dǎo)入一個(gè)庫,而無須了解第三方模塊的細(xì)節(jié)。
Radius 配方(圖:微軟)
開發(fā)人員利用配方的理念可以在不改變應(yīng)用程序的情況下輕松地交換和移除依賴項(xiàng)。例如,在開發(fā)和測試環(huán)境中,他們可以使用打包在容器中的數(shù)據(jù)庫,而在生產(chǎn)環(huán)境中則可以切換到高度可擴(kuò)展、基于 SLA 的 DB 即服務(wù)。
從一開始就具有全面性和可擴(kuò)展性
微軟在Radius上進(jìn)行投資,使其從發(fā)布之初就具有全面性。UCP 支持在 Kubernetes、Azure 和 AWS 云服務(wù)上運(yùn)行的容器化應(yīng)用程序。開發(fā)人員可以直接使用大量 Azure 或 AWS 云服務(wù)。添加 GCP 和阿里巴巴等其他云平臺只是時(shí)間問題。
Radius 可以與 Dapr 無縫整合,Dapr 是微軟的另一個(gè)開源項(xiàng)目,Dapr可輕松實(shí)現(xiàn)多云開發(fā)。開發(fā)人員可以將 Dapr 與他們的應(yīng)用程序整合,運(yùn)營人員可以在 Radius 模板中定義 Dapr 功能。
運(yùn)營人員可以利用工作空間的概念使用本地配置文件管理多個(gè) Radius 平臺和環(huán)境,這是 Radius 另一個(gè)很棒的功能。開發(fā)人員可以輕松地定義和切換工作空間,在多個(gè)環(huán)境中部署和管理應(yīng)用程序。這一功能與配方相結(jié)合使 Radius 成了開發(fā)人員和運(yùn)營人員都能使用的超強(qiáng)平臺。
要點(diǎn)
Kubernetes 的復(fù)雜性在不斷增加,云原生應(yīng)用與云服務(wù)之間的差距不斷擴(kuò)大,這些都迫使新平臺不斷發(fā)展。微軟的 Radius 就是為應(yīng)對這兩個(gè)挑戰(zhàn)而作出的嘗試。
Radius 對 Kubernetes 的基礎(chǔ)架構(gòu)進(jìn)行了抽象,使開發(fā)人員能夠?qū)W⒂谧约旱膽?yīng)用程序。由于Radius,在 Kubernetes 集群中運(yùn)行應(yīng)用程序與在公共云環(huán)境下運(yùn)行托管云服務(wù)之間的界限變得模糊了。開發(fā)人員可以將容器化應(yīng)用的功能與基于云的托管服務(wù)進(jìn)行混合和匹配,而無需處理不同的 API、SDK 和資源管理工具。
Radius 有潛力成為一個(gè)強(qiáng)大的平臺,充分利用強(qiáng)大的Kubernetes 和托管云服務(wù)部署現(xiàn)代應(yīng)用程序。如 Radius 被提交到云原生計(jì)算基金會(CNCF)并被接受則必將成為 CNCF 生態(tài)系統(tǒng)中廣泛采用的開源項(xiàng)目。