開(kāi)放應(yīng)用模型(OAM)

在2019年上海QCon大會(huì)上,阿里云和微軟聯(lián)合推出了開(kāi)放應(yīng)用模型 Open Application Model (OAM)開(kāi)源項(xiàng)目,OAM的愿景是在應(yīng)用的維護(hù)生命周期內(nèi),提供一種標(biāo)準(zhǔn)化的溝通方式。將應(yīng)用開(kāi)發(fā)者、應(yīng)用運(yùn)維人員和基礎(chǔ)設(shè)施運(yùn)維人員,以一種標(biāo)準(zhǔn)化的方式連接起來(lái)。讓云原生應(yīng)用的開(kāi)發(fā)、交付和運(yùn)維變得更加簡(jiǎn)潔、高效并且可控。項(xiàng)目地址:https://openappmodel.io/

開(kāi)放應(yīng)用模型

00 前言

在軟件行業(yè)中,日新月異的技術(shù)、標(biāo)準(zhǔn)、設(shè)計(jì)風(fēng)格等不斷的冒出來(lái),代表著技術(shù)的不斷進(jìn)步和更迭,也說(shuō)明這個(gè)行業(yè)存在著一群極其不安分的人,不斷搞事情。究其原因,其實(shí)是當(dāng)前行業(yè)中存在的問(wèn)題,引發(fā)的創(chuàng)新,甚至是革命。

作為軟件開(kāi)發(fā)行業(yè)中的一員,我們必須深入了解這些新的技術(shù)和理念,因?yàn)楹苡锌赡苣惝?dāng)前所面臨的一個(gè)難題,就可以使用這個(gè)新技術(shù)或者理念很好地解決。因此我們本文介紹一下新鮮出爐的開(kāi)放應(yīng)用模型,文章內(nèi)容包含官方文檔中的介紹和自己一些理解。

01 云原生

開(kāi)放應(yīng)用模型針對(duì)云原生應(yīng)用定義了一些規(guī)范和標(biāo)準(zhǔn),這里就先簡(jiǎn)單介紹一下什么是云原生。云原生(cloud native)包含兩部分:云和原生。云就是應(yīng)用運(yùn)行在云環(huán)境中,具有彈性和分布式的特點(diǎn);原生就是土生土長(zhǎng)的意思,也就是說(shuō)應(yīng)用在設(shè)計(jì)之初就考慮到了云的運(yùn)行環(huán)境(IaaS、PaaS、SaaS)。

究竟云原生應(yīng)用是如何實(shí)現(xiàn)的呢?

云原生 = 微服務(wù) + DevOps + 持續(xù)交付 + 容器化

微服務(wù)

  1. 應(yīng)用間采用Restful API通信;
  2. 可以獨(dú)立部署、升級(jí)、擴(kuò)縮容、重啟;
  3. 低耦合高內(nèi)聚;

DevOps

  1. 開(kāi)發(fā)和運(yùn)維高度協(xié)同工作;
  2. 自動(dòng)化發(fā)布管道和CI工具;
  3. 快速部署到生產(chǎn)環(huán)境;

持續(xù)交付

  1. 頻繁發(fā)布、快速交付、快速反饋、降低發(fā)布風(fēng)險(xiǎn);

容器化

  1. Docker等容器技術(shù);
  2. 微服務(wù)的最佳載體;

02 開(kāi)放應(yīng)用模型介紹

開(kāi)放應(yīng)用模型,是構(gòu)建云原生應(yīng)用時(shí),一個(gè)以團(tuán)隊(duì)為核心的標(biāo)準(zhǔn)。

其中明確描述了構(gòu)建云原生應(yīng)用的三個(gè)重度參與方:應(yīng)用開(kāi)發(fā)者、應(yīng)用運(yùn)維、基礎(chǔ)設(shè)施運(yùn)維。他們分別的職責(zé):

  1. 應(yīng)用開(kāi)發(fā)者 負(fù)責(zé)定義應(yīng)用組件;
  2. 應(yīng)用運(yùn)維 負(fù)責(zé)創(chuàng)建這些應(yīng)用組件的實(shí)例,并且為它們分配相應(yīng)的應(yīng)用配置;
  3. 基礎(chǔ)設(shè)施運(yùn)維 負(fù)責(zé)申請(qǐng)、安裝、維護(hù)平臺(tái)上的底層基礎(chǔ)服務(wù),并且能為上層應(yīng)用組件提供穩(wěn)定的服務(wù);

云原生開(kāi)發(fā)和OAM開(kāi)發(fā)方式

序號(hào) 云原生開(kāi)發(fā) OAM開(kāi)發(fā)方式
0 微服務(wù)非常復(fù)雜 一種新的應(yīng)用模型
1 開(kāi)發(fā)者必須在基礎(chǔ)設(shè)施工具(鏡像、倉(cāng)庫(kù)、版本控制等)上花費(fèi)越來(lái)越多的時(shí)間 利用角色和作用域來(lái)管理應(yīng)用,就像管理你的團(tuán)隊(duì)一樣,不用關(guān)心基礎(chǔ)設(shè)施
2 應(yīng)用的開(kāi)發(fā)過(guò)程中糾纏著應(yīng)用的安全、性能和配置問(wèn)題 有一個(gè)固定的工作流,它將開(kāi)發(fā)者和運(yùn)維所關(guān)注的事情分離開(kāi),并且提供了靈活性和明確分工
3 微服務(wù)的運(yùn)行環(huán)境會(huì)影響到你的應(yīng)用的開(kāi)發(fā)和配置 可以運(yùn)行在任何地方,可以跨云平臺(tái)和邊界設(shè)備部署

一個(gè)開(kāi)放應(yīng)用模型的Kubernetes實(shí)現(xiàn):Rudr

Rudr 采用的是增量的方法解決問(wèn)題,它的架構(gòu)設(shè)計(jì),提供了一組Kubernetes的插件,它允許任何對(duì)OAM規(guī)范的實(shí)現(xiàn)(使用原生的API或者kubectl)部署在該集群中。

應(yīng)用開(kāi)發(fā)者專(zhuān)注于構(gòu)建OAM組件,應(yīng)用運(yùn)維人員專(zhuān)注于利用OAM應(yīng)用配置的應(yīng)用運(yùn)維能力,基礎(chǔ)設(shè)施運(yùn)維人員專(zhuān)注于Kubernetes集群的運(yùn)維。利用開(kāi)放應(yīng)用模型,現(xiàn)在用戶(hù)可以按照這個(gè)框架在Kubernetes集群上定義他們的應(yīng)用。

目前,Rudr 利用已經(jīng)定義好的 trait 來(lái)完成任務(wù),這樣用戶(hù)有選擇任何底層工具的自由,并且提供了專(zhuān)注于功能而不是技術(shù)的 trait 。未來(lái),Rudr 可能會(huì)提供一組默認(rèn)的技術(shù)來(lái)支持一個(gè)trait所需要的功能。

03 對(duì)開(kāi)放應(yīng)用模型的理解

伴隨著各種容器云技術(shù)的出現(xiàn),微服務(wù)的應(yīng)用開(kāi)發(fā)也出現(xiàn)了很多可以選擇的架構(gòu)模式,可謂靈活性很高,想必使用過(guò)(或者調(diào)研過(guò))的同學(xué)都是知道的?,F(xiàn)在開(kāi)放應(yīng)用模型的出現(xiàn),從行業(yè)上規(guī)范了云原生應(yīng)用架構(gòu)的方式,并且強(qiáng)化了應(yīng)用生命周期中各個(gè)角色的職責(zé)。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容