微軟與阿里雲合作,於開放網頁基金會下開源了OAM(Open Application Model)專案,這是在Kubernetes上建置雲端原生應用程式的規範,用來定義完整代表應用程式的模型,與傳統PaaS應用程式模型最大的差異在於,OAM獨立於平臺,可同時保持標準以及各平臺的獨特性,還可在非Kubernetes環境開發實作。

Kubernetes目前已經成為主流容器調度工具,各公有雲平臺大量地推出Kubernetes服務,但是微軟提到,Kubernetes的核心資源,像是服務(Services)或是部署(Deployments)等各代表了整個應用程式的不同部分,而像是Helm Charts物件,代表了潛在可部署的應用程式,但是一旦部署完成,便沒有一個以應用程式為中心的模型,來定義執行中的應用程式,微軟認為,目前需要一個定義完整且一致的模型,來代表整個應用程式。

而OAM則是可以用來描述應用程式的規範,以便將應用程式描述從應用程式部署細節和託管基礎架構中分離。微軟提到,這樣的分離有多種好處,由於每個Kubernetes叢集都是不同的,從叢集運作細節分離應用程式定義,可使開發者更關注應用程式的關鍵元素,而非部署的運作細節。另一個分離的好處,便是允許平臺架構師重複使用元件,並讓應用程式開發者專注於將元件和程式碼整合在一起,以便更快速簡單地建置高可靠性應用程式。

在OAM中,應用程式由多個概念組成,第一是應用程式的元件,像是MySQL資料庫,開發人員也可以將自己的程式碼打包成元件,並且編寫Manifests描述元件與微服務之間的關係,這些元件成為平臺架構師可以重複使用的模組,模組中封裝了安全性和可擴展性部署的最佳實踐。

第二個概念則是配置檔案,應用程式營運人員可利用元件配置檔案,來實際部署應用程式的實例,微軟解釋,這些配置資源可以讓營運人員真正執行應用程式。最後一個重要概念則是Traits集合,用來描述應用程式環境的特徵,包括自動擴展以及Kubernetes Ingress等。

微軟提到,比起傳統的PaaS應用程式模型,OAM最重要的差異是與平臺無關,雖然最初的OAM實作Rudr是建立在Kubernetes之上,但事實上OAM並沒有與Kubernetes緊密綁定,因此在不同的環境像是小型裝置或是邊緣裝置的部署等,可以發展成不同的實作,或是在無伺服器的環境,用戶根本不需要了解Kubernetes的複雜性。

OAM還具有可擴充性,可讓平臺供應商透過Trait系統提供用戶平臺特別的功能,硬體廠商也可以透過類似的方法,以Trait系統提供硬體平臺的特別功能,OAM的設計讓應用程式擁有高可移植性,但是每個平臺又都能提供特別的功能,供開發人員在標準以及功能間自己取得平衡。

OAM根據開放網頁基金會協定開發,微軟提到,他們的目的就是要讓OAM發展成為供應商中立的規範,以實現開放治理和社群協作。目前OAM的開放Kubernetes實作Rudr已經在GitHub上開源。


Advertisement

更多 iThome相關內容