什么是云原生,什么是OAM

目录:
1、什么是云原生
2、什么是OAM
3、OAM助力云原生
3.1、传统应用上云
3.2、基于OAM模型云原生


1、什么是云原生:

官网上将云原生的定义概况为:服务网格、声明式API、DevOps、持续交付、微服务、容器这六大特征,这也成了很多人对云原生的基础印象。

云原生计算基金会总经理Priyanka Sharma对云原生的解释为:云原生技术是指工程师和软件人员利用云计算构建更快、更有弹性的技术,这样做是为了快速满足客户的需求。

这里我对云原生的理解为:云原生继承于云计算,"原生"这两个字代表了从原生家庭(云计算)中遗传了绝大部分的云计算属性,但是在遗传的过程中发生了一些变化,就像人类遗传上基因的碱基对发生了改变。那么在"云原生"的遗传过程中核心发生变化的碱基对是其承载计算方式的改变,由虚拟机、物理机改变成了容器为核心的工作负载的计算方式。从而对不同云计算环境下有较强的亲和性。

简单的说云原生就是基于云计算利用容器技术快速构建应用的一种规范。


2、什么是OAM:

定义:OAM( Open Application Model )全称开放应用模型。是云原生应用标准定义与架构模型,一种标准规范,通过这个模型我们可以以统一的应用模型标准快速、高效的构建基于k8s基座上的应用,管理以及运维。

我们知道在k8s上面部署一个应用,承载这个应用的基础k8s资源有deployment、service、ingress、configmap等不同部分组成,我们需要创建和管理这些资源的yaml文件对象,虽然我们可使用helm charts来进行统一的打包管理,但是这个helm charts不能代表这个应用的全部内容,要是我们缺少一个应用相应的依赖资源,那么我们需要给这个helm charts包添加修改。

那么是否能为Kubernetes 以及云原生技术栈提供一种以应用为中心的 API 资源来提供一个专注于应用管理的、标准的、高度一致的模型,这个 API 资源可以代表完整运行的应用本身,而不仅仅是应用模板或者一个应用的几个组成部分,这就是开放应用模型 Open Application Model (OAM)通过这个模型来规范云原生技术栈下应用生命周期的统一标准管理。OAM简单的说就是一个规范,用这个规范将应用的定义与运维能力进行分离。应用管理者只要遵守这个规范,就可以编写出一个自包含、自描述的“应用部署配置文件”。具体的说,这个应用部署配置文件(应用描述文件)实际上由两部分组成:

应用描述 = 应用组件 + 应用特征

1)、应用组件:
在 OAM 中,“应用”是由多个概念共同组合而成的。 第一个概念是:应用组件(Components),它是整个应用的重要组成部分。 所以说,应用组件既可以包括应用运行所依赖的服务:比如 MySQL 数据库,也包括应用服务本身:比如拥有多个副本的 PHP 服务器。 开发者可以把他们写的代码“打包”成一个应用组件,然后编写配置文件来描述该组件与其他服务之间的关系,就像使用docker compose一样来描述应用之间的依赖。 应用组件的概念,让平台架构师能够将应用分解成一个个可被复用的模块,这种模块化封装应用组成部分的思想,代表了一种构建安全、高可扩展性应用的最佳实践:它通过一个完全分布式的架构模型,实现了应用组件描述和实现的解耦。

2)、应用特征:
最后一个概念是一组应用运维特征(Traits) ,它们描述了应用在具体部署环境中的运维特征,比如应用的水平扩展的策略和 Ingress 规则,这些特征对于应用的运维来说非常重要,但它们在不同的部署环境里却往往有着截然不同的实现方式。 举一个简单例子,同样是 Ingress,它在公有云上和本地数据中心的实现可能是完全不同的:前者一般是 SLB 这样的云服务或者使用nsx-t这样的网络提供的lb,而后者则可能是使用haproxy-ingress controller。这也就意味着针对这两个环境的 Ingress 运维工作,将会有天壤之别。 但与此同时,无论是在哪个环境里,这个 Ingress 规则对于应用开发人员来说,可能是完全相同的(提供负载功能)。 应用特征的设计,让这种关注点分离成为可能:只要这两个环境在 OAM 模型下提供了对 Ingress 这个应用运维特征的实现,那么你的应用就可以使用统一的 Ingress 规则描述无差别的在这两个地方运行起来。而与此同时,这两个环境的基础设施供应商可以继续通过配置这些应用特征的实现,来满足它们各自的运维要求(例如:不同环境里 Ingress 实现在满足合规性和安全性上的差异)。

总结:OAM是一个模型、是一个标准规范、是一个框架,其核心落地思想是以应用为中心API资源,其本质是应用本身和应用特征分离。


3、OAM助力云原生:

3.1、传统应用上云:

应用上云目前已经成为中小企业绕不开的发力点,而应用上云时候应用架构和基础设施规划已经成为了企业的默认选项。

一个云上的应用,肯定不只是简单的可执行文件。就拿 Java Web 网站为例,这个应用要想在云平台上被最终用户使用到,就需要有大量的外部依赖需要处理。这就是云端应用开发者实际上关心的事情,其实一点也不简单:
这种情况下,在云上交付一个应用的过程,实际上非常坎坷。

举几个例子:作为云上的开发者,我们首先需要花费大量的时间来进行应用整体部署架构的设计,才能大致搞清楚这个应用到底需要开通哪些云服务。但这依然避免不了一些让人头疼情况的发生,例如:
因为一个操作流程失误,一些需要预先申请的云资源不到位,就得返工重来;
一旦某个云服务的配置不合理,就得重新配置,甚至删掉重来;
整个上线应用的过程,我们需要不停地在各种云产品控制台之间来回跳转;
还有很多时候,我们不得不一个一个手工处理应用删除遗留下来的各种云资源;
上述情况的出现,总的来说是因为云上应用管理的过程,实际上是一个离散的状态,导致整个流程杂乱无序,也很难把控,出错返工就在所难免了。

再举个例子。除了过程上的繁杂之外,云端应用管理的另一个现状就是:开发者总是需要不停的去开通和配置各种各样的云服务,同时也要花大量的时间去开发各种云产品的开通和接入代码。尤其让人头疼的是,这些所有对云服务的开通、配置和接入工作,几乎都是“一次性工作”。我给一个应用组件做的事情,再上线另一个应用组件的时候,又得全部重新做一遍。甚至有时候为了接入一个新的云服务,必须重新开发整个应用。上述情况的出现,归根到底是因为对于应用所依赖的云服务来说,它们的开通与配置工作,并不是一个可复用的能力,这就导致了大量的重复劳动和对接工作需要一而再、再而三的在应用管理的过程中不断重复进行。

这些情况,都是现今制约和困扰着云端应用开发和运维人员的几个典型“症状”,也点明了当前云应用管理过程“耗时”、“耗力”背后,两个显著的症结所在:
应用本身:不能以统一、自描述的方式定义应用与云资源的关系;
云基础设施本身:没有一种统一、标准、高效的方式交付给应用使用。

总结:从上面可以看出云上环境通过开放的api已经实现简化对云基础设施层资源的调用,然而在上层应用和开放的api层缺少声明式的描述。

3.2、基于OAM模型云原生:

在 Open Application Model 的模型中,应用管理人员可以灵活搭配应用组件与应用特征,从而对接不同的云基础设施能力到应用中。这种基础设施能力通过添加一层垫片“OAM”来服务用户后,实际上就能够差异化的表达不同运行环境能够为应用提供的不同基础设施能力。

举个例子,一位开发者定义了一个叫做“车”的应用描述,并做出了如下叙述:
要有安全性
要能有操控能力
要有行使动力

然后,他把这样的应用描述交给了云平台,云平台根据这个描述,为它绑定了一组比较基础的“应用特征”:
安全:安全带、气囊、普通刹车
操控:手动 5 档、普通方向盘
动力:普通发动机

这样,这个应用在它的最终用户看来,实际上就是一个“家用汽车”。
但是,过了一阵子,开发者决定对这个“车”进行一次升级。这时候,他该怎么做呢?

实际上,他什么也不用做。他只要告诉应用运维,为之前的“车”应用描述,绑定一组更加“强大”的应用特征即可,比如:
安全:高强度车架、悬挂减震、全身防护、赛车式刹车
操控:手动 8 档、赛车方向盘
动力:赛车引擎

所以,一旦上述“更强大”的应用特征,同“车”应用描述绑定,我们就可以将一个“家用车”立刻升级成一部强大的“赛车”。而在这个过程中,应用开发和应用运维唯一要做的事情,就是像“乐高积木”那样,灵活搭配和组装不同的应用特征而已。

而更重要的是,OAM 的设计初衷之一,是要提供标准化云端应用管理体验,这就需要“抹平”不同运行环境之间的不同,以便让应用“ 一次定义,多处运行”。但与此同时,OAM 提供的应用特征系统,则使得云平台标准化的暴露出自己的能力之后,用户依然可以通过对比不同运行环境的应用特征的差异,从而更准确的选择自己的应用要部署到哪个运行环境当中,真正意义上实现“Define Once, Run Where I Choose” 的交付体验。所以说,应用特征系统,正是 OAM 在设计中平衡可移植性和差异性的一个重要的创新之举。


参考:
云原生:
https://builtin.com/cloud-computing/what-is-cloud-native

oam:
https://developer.aliyun.com/article/721106
https://mp.weixin.qq.com/s/lh4t9MNlfI5GqJeMFj7Mew

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,376评论 6 491
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,126评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,966评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,432评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,519评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,792评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,933评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,701评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,143评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,488评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,626评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,292评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,896评论 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,742评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,977评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,324评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,494评论 2 348

推荐阅读更多精彩内容

  • 渐变的面目拼图要我怎么拼? 我是疲乏了还是投降了? 不是不允许自己坠落, 我没有滴水不进的保护膜。 就是害怕变得面...
    闷热当乘凉阅读 4,238评论 0 13
  • 夜莺2517阅读 127,717评论 1 9
  • 版本:ios 1.2.1 亮点: 1.app角标可以实时更新天气温度或选择空气质量,建议处女座就不要选了,不然老想...
    我就是沉沉阅读 6,883评论 1 6
  • 我是一名过去式的高三狗,很可悲,在这三年里我没有恋爱,看着同龄的小伙伴们一对儿一对儿的,我的心不好受。怎么说呢,高...
    小娘纸阅读 3,384评论 4 7
  • 那一年,我选择了独立远行,火车带着我在前进的轨道上爬行了超过23个小时; 那一年,我走过泥泞的柏油路,在那个远离故...
    木芽阅读 1,630评论 4 5