日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Serverless 风起云涌,为什么阿里,微软,AWS 却开始折腾 OAM?

發(fā)布時(shí)間:2025/3/20 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Serverless 风起云涌,为什么阿里,微软,AWS 却开始折腾 OAM? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

作者 | 張磊? 鄧洪超

**導(dǎo)讀:**近日,AWS ECS 團(tuán)隊(duì)在官方 GitHub 上發(fā)布了一個(gè)名叫:Amazon ECS for Open Application Model 的開源項(xiàng)目,越來(lái)越多的廠商開始探索 OAM 的落地實(shí)踐。OAM 到底有什么魅力,讓多家云廠商聯(lián)合起來(lái)共同擁抱呢?

Serverless 與 AWS

Serverless 這個(gè)詞第一次被是 2012 年一篇名為《Why The Future of Software and Apps is Serverless》的文章。不過(guò),如果你真去考古的話就會(huì)發(fā)現(xiàn),這篇文章談到的內(nèi)容是其實(shí)是持續(xù)集成和代碼版本控制的軟件工程理念,跟我們今天談 Serverless 所提到的 “scale to zero”、“pay as you go”,FaaS/BaaS 這些東西,完全不是一個(gè)事情。

在 2014 年,AWS 發(fā)布了一個(gè)叫做 Lambda 的產(chǎn)品。這個(gè)產(chǎn)品的設(shè)計(jì)理念很簡(jiǎn)單:它認(rèn)為云計(jì)算最終是面向應(yīng)用提供服務(wù)的,而當(dāng)用戶想要部署一個(gè)應(yīng)用的時(shí)候,它只需要有一個(gè)地方放自己編寫程序來(lái)執(zhí)行具體任務(wù),而不用關(guān)心這個(gè)程序運(yùn)行在哪個(gè)機(jī)器或者哪個(gè)虛擬機(jī)上。

正是 Lambda 的發(fā)布,才讓“Serverless”這一范式提高到一個(gè)全新的層面。Serverless 為云中部署和運(yùn)行應(yīng)用程序提供了一種全新的系統(tǒng)體系結(jié)構(gòu),強(qiáng)調(diào)用戶不需要關(guān)心復(fù)雜的服務(wù)器配置,只需要關(guān)心自己的代碼以及如何把代碼打包成一個(gè)可以被云計(jì)算平臺(tái)托管的“可運(yùn)行實(shí)體”。在隨后發(fā)布了一系列譬如根據(jù)實(shí)際流量擴(kuò)展應(yīng)用實(shí)例、按照實(shí)際使用量而不是預(yù)分配資源來(lái)計(jì)費(fèi)等經(jīng)典特性之后,AWS 才逐步奠定了 Serverless 領(lǐng)域的事實(shí)標(biāo)準(zhǔn)。

2017 年,AWS 發(fā)布了 Fargate 服務(wù),將 Serverless 的理念推廣到了基于容器的可運(yùn)行實(shí)體中,很快這個(gè)思想也被 Google Cloud Run 等進(jìn)行了跟進(jìn),開啟了“下一代”基于容器的 Serverless 運(yùn)行時(shí)熱潮。

Serverless 與 Open Application Model (OAM)?

那么 Open Application Model(OAM),跟 AWS 和 Serverless 又是什么關(guān)系呢?

首先,OAM(開放應(yīng)用模型)是一套由阿里云和微軟共同發(fā)起、由云原生社區(qū)共同維護(hù)的應(yīng)用描述規(guī)范(spec)。OAM 的核心理念是:“以應(yīng)用為中心”,它強(qiáng)調(diào)研發(fā)和運(yùn)維圍繞著一組聲明式的、靈活可擴(kuò)展的上層抽象進(jìn)行協(xié)作,而不是直接去使用復(fù)雜晦澀的基礎(chǔ)設(shè)施層 API。

比如,對(duì)于一個(gè)基于容器的、使用 K8s HPA 進(jìn)行水平擴(kuò)展應(yīng)用,在 OAM 規(guī)范下會(huì)通過(guò)如下兩個(gè) YAML 文件定義出來(lái)。

研發(fā)負(fù)責(zé)編寫的 YAML 文件:

apiVersion: core.oam.dev/v1alpha2 kind: Component metadata:name: web-server spec:# 待部署的應(yīng)用詳情workload:apiVersion: core.oam.dev/v1alpha2kind: Serverspec:containers:- name: frontendimage: frontend:latest

運(yùn)維(或者 PaaS 平臺(tái))負(fù)責(zé)編寫的 YAML 文件:

apiVersion: core.oam.dev/v1alpha2 kind: ApplicationConfiguration metadata:name: helloworld spec:components:- name: frontend# 該應(yīng)用運(yùn)行所需的運(yùn)維能力traits:- trait:apiVersion: autoscaling.k8s.io/v2beta2kind: HorizontalPodAutoscalermetadata:name: scale-hellospec:minReplicas: 1maxReplicas: 10

可以看到,在 OAM 規(guī)范下,研發(fā)和運(yùn)維的關(guān)注點(diǎn)是完全分離開的。研發(fā)與運(yùn)維只需要編寫非常少量的、跟自己相關(guān)的一些字段,而不是完整的 K8s Deployment 和 HPA 對(duì)象,就可以輕松的定義和發(fā)布應(yīng)用。這就是“上層抽象”為我們帶來(lái)的好處。

像上述這樣的 YAML 文件被提交給 K8s 之后,就會(huì)由 OAM 插件自動(dòng)轉(zhuǎn)換成完整的 Deployment 和 HPA 對(duì)象真正運(yùn)行起來(lái)。

由于 OAM 規(guī)范了“應(yīng)用”、“運(yùn)維能力”、“發(fā)布邊界”等一系列云原生應(yīng)用交付的定義標(biāo)準(zhǔn),應(yīng)用管理平臺(tái)的開發(fā)者們就可以使用這個(gè)規(guī)范、通過(guò)更簡(jiǎn)潔的 YAML 文件描述各種各樣的應(yīng)用和運(yùn)維策略,最后通過(guò) OAM 插件把這些 YAML 文件跟 K8s 的實(shí)際資源(包括 CRD)映射起來(lái)。

也就是說(shuō),OAM 給出了一個(gè)定義“上層抽象”的事實(shí)標(biāo)準(zhǔn),而這個(gè)“上層抽象”最重要的作用,就是防止各種各樣的基礎(chǔ)設(shè)施細(xì)節(jié)(比如 HPA、Ingress、容器、Pod、Service 等)泄露給研發(fā)同學(xué),帶來(lái)不必要的復(fù)雜性。所以說(shuō),OAM 一經(jīng)發(fā)布,就被稱作是開發(fā) K8s 應(yīng)用平臺(tái) 的“神兵利器”。

但更重要的是,這種從以應(yīng)用描述中“剝離基礎(chǔ)設(shè)施層細(xì)節(jié)、為開發(fā)者提供最友好的上層抽象”的思想,與 Serverless “去基礎(chǔ)設(shè)施化” 的理念不謀而合。更確切地說(shuō),OAM 天生就是 Serverless 的。

也正因?yàn)槿绱?#xff0c;OAM 一經(jīng)發(fā)布,就受到了 Serverless 領(lǐng)域的重點(diǎn)關(guān)注。這其中,當(dāng)然也少不了 AWS。

極致體驗(yàn):AWS ECS for OAM

2020 年 3 月底,AWS ECS 團(tuán)隊(duì)在官方 GItHub 上發(fā)布了一個(gè)名叫:Amazon ECS for Open Application Model 的開源項(xiàng)目。

項(xiàng)目地址:https://github.com/awslabs/amazon-ecs-for-open-application-model

這個(gè)項(xiàng)目,正是 AWS 團(tuán)隊(duì)基于 Serverless 服務(wù)對(duì) OAM 進(jìn)行支持的一次嘗試。這個(gè)項(xiàng)目的底層運(yùn)行時(shí),正是我們前面提到的 Serverless 容器服務(wù):Fargate。?而這個(gè) AWS ECS for OAM 項(xiàng)目給開發(fā)者帶來(lái)的體驗(yàn)非常有趣,我們來(lái)看一下。

準(zhǔn)備工作有三步,一次性執(zhí)行完即可。

1.用戶需要在本地有 AWS 賬戶的認(rèn)證信息,這個(gè)可以通過(guò) AWS 官方客戶端 aws configure 命令一鍵生成;
2.編譯項(xiàng)目,然后你就可以拿到一個(gè)叫做 oam-ecs 的可執(zhí)行文件;
3.你需要執(zhí)行 oam-ecs env 命令來(lái)為你后面的部署準(zhǔn)備環(huán)境。這條命令結(jié)束后,AWS 會(huì)自動(dòng)為你創(chuàng)建 VPC 和對(duì)應(yīng)的公有/私有子網(wǎng)。

而準(zhǔn)備工作完成后,你只要在本地定義一個(gè) OAM 應(yīng)用 YAML 文件(比如前面提到的 helloworld 應(yīng)用的例子)那么你就可以通過(guò)如下所示的一行命令把一個(gè)完整的、帶了 HPA 的應(yīng)用在 Fargate 上部署起來(lái),并且可以直接在公網(wǎng)訪問(wèn)到:

oam-ecs app deploy -f helloworld-app.yaml

是不是非常簡(jiǎn)單?

在 AWS ECS for OAM 項(xiàng)目的官方文檔中,它給出了一個(gè)更加復(fù)雜的例子,我們來(lái)講解一下。

這次我們要部署的應(yīng)用由三個(gè) YAML 文件組成,依然劃分成研發(fā)和運(yùn)維兩個(gè)關(guān)注點(diǎn):

1. 研發(fā)負(fù)責(zé)編寫

  • server-component.yaml:這個(gè)文件里的內(nèi)容是應(yīng)用的第一個(gè)組件(component),具描述的是我們要部署的應(yīng)用容器;
  • worker-component.yaml:這個(gè)文件里的內(nèi)容應(yīng)用的第二個(gè)組件(component), 具體描述的是負(fù)責(zé)檢查當(dāng)前環(huán)境的網(wǎng)絡(luò)是否暢通的一個(gè)循環(huán) Job。

2. 運(yùn)維負(fù)責(zé)編寫

example-app.yaml:這個(gè)文件里的內(nèi)容是完整的應(yīng)用組件拓?fù)湟约案鱾€(gè)組件的運(yùn)維特征(traits),具體描述的是一個(gè)“手動(dòng)擴(kuò)容(manual-scaler)”的運(yùn)維策略,它專門用來(lái)擴(kuò)容 worker-component。

所以,上述 example-app.yaml 也就是完整應(yīng)用描述的內(nèi)容如下所示:

apiVersion: core.oam.dev/v1alpha1 kind: ApplicationConfiguration metadata:name: example-app spec:components:- componentName: worker-v1instanceName: example-workertraits:- name: manual-scalerproperties:replicaCount: 2- componentName: server-v1instanceName: example-serverparameterValues:- name: WorldValuevalue: Everyone

可以看到,它定義了兩個(gè)組件(worker-v1 和 server-v1),并且 worker-v1 組件有一個(gè)叫做 manual-scaler 的手動(dòng)擴(kuò)容策略。

本 Demo 所有的三個(gè) YAML 文件可以查看這個(gè)目錄下的內(nèi)容:https://github.com/awslabs/amazon-ecs-for-open-application-model/tree/master/examples

而上述復(fù)雜應(yīng)用的部署,依然是一條指令搞定,非常簡(jiǎn)單:

oam-ecs app deploy \-f examples/example-app.yaml \-f examples/worker-component.yaml \-f examples/server-component.yaml

上述指令執(zhí)行完成后(在國(guó)內(nèi)的同學(xué)因?yàn)樘厥獾木W(wǎng)絡(luò)問(wèn)題可能需要一點(diǎn)耐心),你就可以通過(guò) oam-ecs app show 命令查看到應(yīng)用的訪問(wèn)信息和 DNS 名字。打開瀏覽器,輸入這個(gè)訪問(wèn)信息,你就可以直接訪問(wèn)到這個(gè)應(yīng)用了,如下所示:

而如果你要修改應(yīng)用配置,比如更新鏡像或者修改 replicaCount 的值,那么只需要修改上述 YAML 文件然后重新 deploy 即可,完全是聲明式的管理方式。

實(shí)際上,上述操作如果通過(guò) AWS 的 Console 來(lái)完成,至少需要在 5 個(gè)云產(chǎn)品頁(yè)面之間互相跳轉(zhuǎn)進(jìn)行各種各樣的配置;或者,你就需要學(xué)習(xí) CloudFormation 語(yǔ)法然后編寫一個(gè)非常非常長(zhǎng)的 CF 文件,以便拉起應(yīng)用運(yùn)行所需的 Fargate 實(shí)例、LoadBalancer、網(wǎng)絡(luò)、DNS 配置等等所有資源。

但是通過(guò) OAM 規(guī)范,上述定義和部署應(yīng)用過(guò)程不僅變得極其簡(jiǎn)單,而且還把原來(lái)流程化的云服務(wù)操作直接轉(zhuǎn)換成了更簡(jiǎn)潔、更友好的聲明式 YAML 文件。而這里所需的實(shí)現(xiàn) OAM 規(guī)范的具體工作,其實(shí)也就幾百行代碼而已。

更重要的是,當(dāng) AWS Fargate 這樣的 Serverless 服務(wù)跟 OAM 這樣開發(fā)者友好的應(yīng)用定義結(jié)合在一起之后,你才會(huì)真正感受到:原來(lái),這種簡(jiǎn)潔、爽快和極低的心智負(fù)擔(dān),才是 Serverless 為開發(fā)者帶來(lái)的極致體驗(yàn)。

最后:當(dāng)應(yīng)用模型遇上 Serverless

OAM 模型在云原生應(yīng)用交付生態(tài)引起了巨大的反響。目前,阿里云 EDAS 服務(wù)已經(jīng)成為了業(yè)界第一款基于 OAM 構(gòu)建的生產(chǎn)級(jí)應(yīng)用管理平臺(tái),并很快推出下一代“以應(yīng)用為中心”的產(chǎn)品體驗(yàn);在 CNCF 社區(qū),知名的跨云應(yīng)用管理與交付平臺(tái) Crossplane 項(xiàng)目也已經(jīng)成為了 OAM 規(guī)范的重要采納者和維護(hù)者。

EDAS 官網(wǎng):https://help.aliyun.com/product/29500.html
Crossplane:https://github.com/crossplane/crossplane

實(shí)際上,不止 AWS Fargate,我們?cè)朴?jì)算生態(tài)里的所有 Serverless 服務(wù)都可以很容易的使用 OAM 來(lái)作為面向開發(fā)者的表現(xiàn)層和應(yīng)用定義,從而實(shí)現(xiàn)對(duì)原本復(fù)雜的基礎(chǔ)設(shè)施 API 進(jìn)行簡(jiǎn)化和抽象,將原本復(fù)雜的流程化操作“一鍵”升級(jí)為 Kubernetes 風(fēng)格的聲明式應(yīng)用管理方式。更重要的是,得益于 OAM 的高可擴(kuò)展性,你不僅可以在 Fargate 上部署容器應(yīng)用,你還可以用 OAM 來(lái)描述 Function,虛擬機(jī),WebAssembly 乃至任何你能想到的工作負(fù)載類型,然后把它們輕松的部署在 Serverless 服務(wù)上,甚至在不同的云服務(wù)之間無(wú)縫遷移。這些看似“神奇”的能力,都是當(dāng)一個(gè)標(biāo)準(zhǔn)化、可擴(kuò)展的“應(yīng)用模型”遇見一個(gè) Serverless 平臺(tái)之后能夠碰撞出來(lái)的創(chuàng)新火花。

應(yīng)用模型 + Serverless,已經(jīng)逐漸成為了云原生生態(tài)最熱門的話題之一,歡迎你一起來(lái)加入 CNCF 云原生應(yīng)用交付領(lǐng)域小組(SIG App Delivery),推動(dòng)云計(jì)算生態(tài)朝著“以應(yīng)用為中心”的方向不斷前進(jìn)起來(lái)!

AWS ECS on OAM 項(xiàng)目:https://github.com/awslabs/amazon-ecs-for-open-application-model/
Open Application Model 項(xiàng)目:https://github.com/oam-dev/spec
CNCF SIG App Delivery:https://github.com/cncf/sig-app-delivery

目前,OAM 規(guī)范和模型實(shí)際已解決許多現(xiàn)有問(wèn)題,但它的路程才剛剛開始。OAM 是一個(gè)中立的開源項(xiàng)目,我們歡迎更多的人參與其中,共同定義云原生應(yīng)用交付的未來(lái)。

參與方式:

  • 釘釘掃碼進(jìn)入 OAM 項(xiàng)目中文討論群

  • 通過(guò) Gitter 直接參與討論
  • OAM 開源實(shí)現(xiàn)地址
  • 點(diǎn)擊 star 一下

作者簡(jiǎn)介

張磊? 阿里云高級(jí)技術(shù)專家。他是 Kubernetes 項(xiàng)目的維護(hù)者之一。張磊目前在阿里的 Kubernetes 團(tuán)隊(duì)工作,其工作領(lǐng)域包括 Kubernetes 和云原生應(yīng)用管理系統(tǒng)。

鄧洪超? 阿里云容器平臺(tái)技術(shù)專家。原 CoreOS 公司工程師、 K8s Operator 項(xiàng)目的核心作者之一。

“阿里巴巴云原生關(guān)注微服務(wù)、Serverless、容器、Service Mesh 等技術(shù)領(lǐng)域、聚焦云原生流行技術(shù)趨勢(shì)、云原生大規(guī)模的落地實(shí)踐,做最懂云原生開發(fā)者的公眾號(hào)。”

總結(jié)

以上是生活随笔為你收集整理的Serverless 风起云涌,为什么阿里,微软,AWS 却开始折腾 OAM?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。