读完《云原生架构白皮书》,我们来谈谈开放应用模型(OAM)
簡(jiǎn)介:?受阿里云邀請(qǐng),我有幸在《云原生架構(gòu)白皮書(shū)》發(fā)布前試讀了該書(shū),本文結(jié)合白皮書(shū)內(nèi)容,談?wù)勯_(kāi)放應(yīng)用模型(OAM)
前言
7月21日阿里云發(fā)布了《云原生架構(gòu)白皮書(shū)》,該書(shū)由阿里云眾多技術(shù)專家共同編撰而成,從云原生定義、技術(shù)、架構(gòu)、產(chǎn)品、實(shí)踐和發(fā)展趨勢(shì)幾個(gè)方面詳細(xì)介紹了云原生這一近些年來(lái)大火的技術(shù)概念。受阿里云邀請(qǐng),我有幸在該書(shū)發(fā)布前試讀了該書(shū),但是由于最近比較忙,現(xiàn)在才有空和大家分享我的試讀感受。
熟悉我的朋友肯定知道,去年開(kāi)放應(yīng)用模型(OAM)概念一經(jīng)提出,我就十分關(guān)注這一技術(shù)模型,最近更是參與到了該模型的實(shí)現(xiàn)項(xiàng)目?Crossplane?中,同社區(qū)中的同學(xué)共同實(shí)現(xiàn)云原生技術(shù)“以應(yīng)用為中心”這一終極愿景。但是苦于社區(qū)中的資料都是英文,同時(shí)自己的理解又比較片面,在向身邊同事和其他不了解該項(xiàng)技術(shù)的同學(xué)科普 OAM 時(shí),往往很難準(zhǔn)確表達(dá)我的觀點(diǎn)。
OAM 是什么?OAM 能做什么?我們?yōu)槭裁葱枰?OAM?每每被同事進(jìn)行靈魂拷問(wèn)時(shí),總是不能拿出完整、條理、有說(shuō)服力的東西,只能根據(jù)自己的理解以及一些零零散散的技術(shù)文章來(lái)說(shuō)明我的觀點(diǎn),很是不爽。但是當(dāng)我讀到《云原生架構(gòu)白皮書(shū)》第三章中的開(kāi)放應(yīng)用模型(OAM)章節(jié)時(shí),我知道我的問(wèn)題解決了。該章系統(tǒng)的介紹了 OAM 這項(xiàng)技術(shù)的背景、定義、概念、實(shí)現(xiàn)和未來(lái),讀者只要對(duì)云原生稍有理解,就能輕松從這章中找到前面那些問(wèn)題的答案。
那么 OAM 到底是什么?
從《云原生架構(gòu)白皮書(shū)》的內(nèi)容出發(fā),結(jié)合我的理解,大致將 OAM 的特點(diǎn)分為以下三點(diǎn):
以應(yīng)用為中心
今年是 Kubernetes 項(xiàng)目誕生的第六年,在這六年中,以 Kubernetes 為首的云原生技術(shù)快速的改變著我們的技術(shù)架構(gòu),一個(gè)又一個(gè)的應(yīng)用被拆分成微服務(wù),打包成容器,運(yùn)行在 Kubernetes 上。然而隨著微服務(wù)越拆越多,管理微服務(wù)的難度也呈指數(shù)型增長(zhǎng),Kubernetes 中并沒(méi)有”應(yīng)用“這一概念,提供給我們的只有 deployment、StatefulSet 這樣工作負(fù)載粒度的資源,而一個(gè)應(yīng)用,可能由多個(gè) Deployment、Service、以及各種相關(guān)配套資源組成(如:HPA 用于彈性伸縮、Ingress 用于外部訪問(wèn)等)。Kubernetes 并沒(méi)有提供給我們一個(gè)統(tǒng)一的資源或者說(shuō)是方法來(lái)管理這些相關(guān)資源,各個(gè)公司只能開(kāi)發(fā)自己的 PASS 平臺(tái)或設(shè)立規(guī)范約束自己的應(yīng)用。
OAM 的出現(xiàn)補(bǔ)充了“應(yīng)用”這一概念,建立對(duì)應(yīng)用和它所需的運(yùn)維能力定義與描述的標(biāo)準(zhǔn)規(guī)范。換言之,OAM 既是標(biāo)準(zhǔn)“應(yīng)用定義”同時(shí)也是幫助封裝、組織和管理 Kubernetes 中各種“運(yùn)維能力”的工具。通過(guò) OAM 中應(yīng)用的可交付對(duì)象 - Application Configuration,我們可以輕松的掌握我們的應(yīng)用到底有那些 Kubernetes 工作負(fù)載組成,這些工作負(fù)載都使用了哪些運(yùn)維特性,這些內(nèi)容都會(huì)以 Kubernetes API 對(duì)象的形式展示,查看起來(lái)和查看 Deployment 與 Service 資源一樣方便。
關(guān)注點(diǎn)分離
在實(shí)踐中,如果基礎(chǔ)架構(gòu)和應(yīng)用是由不同團(tuán)隊(duì)維護(hù)的,由于各個(gè)團(tuán)隊(duì)的關(guān)注點(diǎn)不同、對(duì) Kubernetes 了解的程度不同、使用習(xí)慣不同,很容易產(chǎn)生混亂。實(shí)際上,對(duì)于業(yè)務(wù)研發(fā)人員和運(yùn)維人員而言,他們并不想配置這些如此底層的資源信息,而希望有更高維度的抽象。這就要求一個(gè)真正面向最終用戶側(cè)的應(yīng)用定義,一個(gè)能夠?yàn)闃I(yè)務(wù)研發(fā)和應(yīng)用運(yùn)維人員提供各自所需的應(yīng)用定義原語(yǔ)。
通過(guò)組件(Component)和運(yùn)維特征(Trait)將業(yè)務(wù)研發(fā)人員與運(yùn)維人員關(guān)注的不同特征進(jìn)行分離,再將不同的運(yùn)維特征(Trait)與業(yè)務(wù)組件(Component)進(jìn)行綁定,最終再由OAM 可交付物 – Application Configuration 將所有組件組裝為一個(gè)統(tǒng)一的應(yīng)用。研發(fā)與運(yùn)維對(duì)資源的控制進(jìn)行細(xì)粒度的劃分,可以有效的解決實(shí)際情況中存在的類似”我比你更懂 Kubernetes,要聽(tīng)我的“的現(xiàn)象,避免了研發(fā)與運(yùn)維之間的甩鍋與扯皮的情況。
面向最終用戶的應(yīng)用管理平臺(tái)
這部分白皮書(shū)中并未詳細(xì)提及,但這也是我們現(xiàn)階段的主要工作和努力方向,經(jīng)過(guò)不到一年的時(shí)間,OAM 的概念、思想已經(jīng)基本成熟,而基于 OAM 的實(shí)現(xiàn)也已經(jīng)出現(xiàn) - Crossplane 項(xiàng)目,該項(xiàng)目目前為 CNCF 的?Sandbox?項(xiàng)目。
Crossplane 的出現(xiàn)解決了平臺(tái)維護(hù)者,也就是負(fù)責(zé)維護(hù) Kubernetes 的基礎(chǔ)設(shè)施工程師的難題。但是對(duì)于應(yīng)用研發(fā)和運(yùn)維人員,也就是 OAM 的最終用戶,操作起來(lái)并不是十分的友好。基礎(chǔ)設(shè)施工程師為他們提供了一堆 CRD,他們必須逐個(gè)去挑選、測(cè)試和甄別,尤其是一些運(yùn)維特征(Trait)可能存在功能沖突,不能同時(shí)與一個(gè)業(yè)務(wù)組件(Component)綁定,這都都要應(yīng)用研發(fā)和運(yùn)維人員自己去學(xué)習(xí)和測(cè)試,雖然可以通過(guò)文檔來(lái)規(guī)范,但顯然這樣做并不優(yōu)雅,這時(shí) OAM App Engine(暫定名 RdurX)就出現(xiàn)了。
OAM App Engine 的目標(biāo)用戶群體是應(yīng)用開(kāi)發(fā)者,是希望終端開(kāi)發(fā)者用戶可以感受到 OAM 提倡的各類應(yīng)用管理理念帶來(lái)的價(jià)值。相比于其他基于 K8s 的應(yīng)用管理平臺(tái)(如?rio?),OAM App Engine 將至少具備如下三大核心價(jià)值。
OAM App Engine 由 CLI 命令行工具、 Dashboard UI 管理頁(yè)面和一系列編排文件/DSL 組成,目前還處于功能設(shè)計(jì)與開(kāi)發(fā)當(dāng)中,預(yù)計(jì)在8月底會(huì)和用戶見(jiàn)面。OAM App Engine 的開(kāi)發(fā)者均來(lái)自 OAM 中國(guó)社區(qū),來(lái)自不同的公司和組織,是真正的從社區(qū)中來(lái),服務(wù)社區(qū)用戶。
原文鏈接:https://developer.aliyun.com/article/768884?utm_content=g_1000162429
本文為阿里云原創(chuàng)內(nèi)容,未經(jīng)允許不得轉(zhuǎn)載。
?
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的读完《云原生架构白皮书》,我们来谈谈开放应用模型(OAM)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Go语言入门分享
- 下一篇: 四大触点,教你从“用户视角”构建数据分析