OAM角色定义

news/2025/10/15 0:02:24/文章来源:https://www.cnblogs.com/chucz/p/19142383

OAM角色定义

https://github.com/oam-dev/spec/blob/master/introduction.md

关注点分离

开放应用程序模型提出了开发人员负责的部分与平台工程师负责的部分之间明确的关注点分离。

Open Application Model proposed a clear separation of concerns between the parts that developers are responsible for, and the parts that platform engineers are responsible for. 

角色定义

以基于故事的格式介绍开放式应用程序模型的角色。尽管这不是可能角色的详尽列表,但是这些角色被确定为本规范的主要目标。

  • 开发人员****Developers:以代码形式交付业务价值。尽管他们应该了解所交付代码的操作特性operational characteristics,但他们并不关心_如何_满足操作要求。例如,开发人员可能知道他们的代码将数据写入文件系统上的特定路径,而不必自己关心将哪种类型的卷(磁盘)装入该路径或如何实现这种依赖性。
  • 应用维护者****Application operators:通过配置,安装和管理组件和/或应用程序(例如更新,扩展,自动恢复等)来交付业务价值。与开发人员和应用程序 composers 不同,维护者关注如何满足组件或应用程序的操作要求。 例如,如果开发人员声明组件将数据写入文件系统上的特定路径,则操作员保证在该路径上安装了适当的卷。
  • 基础架构维护者(也称为平台构建商)通过构建以应用程序为中心的平台并管理底层基础架构组件来创造价值。 范围可能从管理本地网络中的物理硬件到直接管理公共云中的云服务产品。 基础架构运营商不太关心应用程序的特定配置需求,而是关注于如何管理企业整体基础架构的全局。 例如,基础架构运营商可以管理用于供应持久性存储的基础存储产品。

案例

我们将讲述一个故事,该故事描述了基于OAM平台的应用程序交付生命周期。故事情节如下所示:

  1. 基础架构运营商决定平台上哪些可用的基础工作负载类型和运营功能可用于处理部署和运营
  2. 开发人员创建一个Web应用程序,定义其特征;
  3. 应用程序维护者或平台本身会实例化该应用程序,并使用自动扩展等操作特性对其进行配置。(实际这就是运维要做的,基于k8s,创建出kubevela,基于kubevela构建一些应用供开发人员使用

基础架构运营商:维护平台功能

开放应用程序模型(Open Application Model)的最强大功能来自实现该模型的底层平台(underlying platforms that implements the model),这些平台可以通过OAM以在支持该模型的任何平台上都一致的方式,提供使底层平台具有唯一性和实用性的功能。

基础架构运营商负责声明,安装和维护平台上可用的基础功能。

下图演示了平台架构:

1607591397658-96c8aeb9-9d66-4474-af5c-c282e80a5ded.png

借助OAM,基础架构运营商和平台维护者可以从 ComponentsTraits, and Scopes 格式的可重用模块(reusable modules)中受益

允许构建以应用程序为中心的平台,这些平台将这些更高级别的抽象作为应用程序级别的API公开,或将它们组合到预定义的应用程序模板中。开发人员可以通过选择模板来选择如何运行其应用程序,例如,具有较高SLO要求的微服务应用程序,具有持久卷的有状态应用程序或具有水平自动缩放功能的事件驱动功能。归功于模块化设计,这以云原生方式为终端用户带来了无服务器serverless 的体验。

同时,OAM本质上支持跨运行时的可移植应用程序定义。如果一个应用可以在一个提供商上部署和使用,那么它应该能够在任何其他提供商上运行。我们在 corestandard, and extended API 中定义必须实现、推荐和候选类型。这将确保可移植性,并在同一规范中提供可扩展性。当然,并非所有东西都是可移植的,这种接口的主要关注点是它是一个“最小公分母”。我们的目标是构建一个与供应商无关的、社区拥有的规范,随着时间的推移,最流行的api将被接受并添加到规范中。这样,演进将确保大多数用户能够通过开放应用模型成功地定义云原生应用程序。

应用程序开发人员:编写和测试代码

假设基础架构运营商已经使用某些运行时系统构建了基于OAM的平台。

一个在线购物应用的开发人员知道如何编写和测试代码。应用程序采用一些参数,例如日志级别和HTTP端口。为了让开发人员专注于实现应用程序的业务逻辑,我们让应用程序维护员(人工或自动操作平台)负责操作任务。这为应用程序开发人员提供了“serverless”体验:他们只需要开发和打包应用程序,然后将其交付给运维即可。

要交付其应用程序,开发人员需要定义_Component YAML文件。在_OAM 中,程序开发人员将程序的每个单独组件描述为 Component__ YAML该文件封装了 工作负载workload 以及运行它所需的信息。例如,它可以包含包装程序的容器映像,是否需要终结点endpoint 。

下图演示了此工作流程:

1607592488632-ed5dead2-c32c-41b8-a427-866f1fbe755d.png

应用程序维护者:部署和操作应用程序

为了运行和操作应用程序,应用程序运维为开发者的components 设置参数值,并在 ApplicationConfiguration yaml 中应用操作特性,例如副本大小replica size,自动缩放策略autoscaling policy,入口点ingress points 和流量路由规则 traffic routing rules 。在OAM中,这些操作特征称为_traits。编写和部署_ApplicationConfiguration yaml 等同于部署应用程序。基础平台将创建定义的工作负载的实时实例,并根据ApplicationConfiguration 规范(spec)将 operational traits 附加到工作负载workloads

1607592822683-23a230a2-236e-49ba-b087-16096542cd91.png

应用程序维护可以是平台本身,即自动化操作平台(automated operation platforms)将根据应用程序开发人员的意图将 traits 分配给components 。在小型组织中,应用程序运维和应用程序开发人员可以是同一个人,但此人仍遵循OAM工作流程,以自助方式分配特征,并清楚地知道他/她正在任何地方配置可部署组件或运营能力时间。此人仍然遵循OAM工作流,以自助方式分配特征

但是我真的没有“应用程序维护者”角色

在许多组织中,应用程序操作员角色并不是一件常事。在这种情况下,应用程序开发人员自己负责配置特征和部署应用程序(例如DevOps),或者该平台实际上采用“serverless”风格,因此只要应用程序工件准备就绪,系统将从此处接管(例如NoOps)。

在DevOps工作流程中,明确定义哪个部分是application component ,哪个部分是operational configuration,是避免由于 mixed mindsets 而引起的通信事故,错误甚至服务中断的关键。例如,在推出应用程序组件的版本时,我将选择同时禁用自动缩放trait。

在NoOps工作流程中,OAM很自然,因为平台本身将充当应用程序运维的角色,并根据应用程序的特性自动为组件配置特征(例如,组件是否为公开服务?是否可复制?)。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/937177.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OCI

OCI【译者的话】本文介绍了OCI运行时和镜像规范,以及在过去的一段时间里大家对该规范的一些误解。OCI规范制订工作尚未落幕,未来也将对容器产生更加深远的影响。 【3 天烧脑式基于Docker的CI/CD实战训练营 | 北京站】…

消灭重复代码的最佳实践

消灭重复代码的最佳实践代码重复本身不可怕,可怕的是漏改或改错。消灭重复代码,降低改动可能引入的风险。学习笔记:https://time.geekbang.org/column/article/228964工厂模式 + 模板方法 消除 if else 和重复代码 …

Spring应用上下文的获取和保存Bean

Spring应用上下文的获取和保存BeanSpring 容器是 IOC 容器,但是,反过来却不成立不常用的容器实现 -- BeanFactory:最简单的容器,提供基本的 DI 功能 高级实现,继承 BeanFactory 派生的应用上下文 -- ApplicationC…

Redis的数据类型选择

Redis的数据类型选择String 几乎所有的数据都可以使用 String 来存储。浪费存储空间,key 也是需要存储空间的 管理、维护成为噩梦,Redis 中存在着大量的 KV 对象 key 冲突的几率变高(不同的业务系统共用一个 Redis …

pipeline解决Redis频繁命令往返导致的性能瓶颈

pipeline解决Redis频繁命令往返导致的性能瓶颈客户端和服务端交互模型Redis 的 pipeline 交互模型Redis pipeline 与原生批量mset等等命令对比原生批量命令是原子性,pipeline 是非原子性的 原生批量命令一次只能执行一…

SpringBean实例化之前做点事情

SpringBean实例化之前做点事情SpringBean 实例化 需求,实现一个视频解码器,可以实现各种视频格式的解码 第一种方法:先去实现各个解码器,然后 if.else 判断使用哪种解码器使用 BeanPostProcessor 优化 第二种方法:…

SpringBoot定时任务不定时执行了

SpringBoot定时任务不定时执行了两个注解 @EnableScheduling:使得@Scheduled生效 @Scheduled:标注在方法上 @Scheduled 注解 fixedDelay任务结束与开始之间的间隔 fixedRate两次任务的开始的间隔,不管任务是不是执行…

依赖冲突的发现和解决

依赖冲突的发现和解决依赖冲突的发现现象一:一个类的行为不按照预期,本来这个类应该是有这个方法的,但是引入一个新的依赖之后就开始报错找不到方法了,一般就是依赖冲突的时候 Maven 自己选择了一个不符合自己预期…

javaLong类型在前端json数据损失精度

javaLong类型在前端json数据损失精度方法一:重新生成pojo对象,将所有数据库类型为bigint都映射成String类 方法二:对于使用springboot,则增加配置代码: package com.gj.app.config;import com.fasterxml.jackson.…

校招面试官揭秘:我们到底在寻找什么样的技术人才?

🎯 校招面试官揭秘:我们到底在寻找什么样的技术人才?又是一年校招季!📚 作为技术团队的Leader,这段时间我面试了不少优秀的同学。有人拿到心仪offer,也有人遗憾错过机会...今天想从面试官的角度,和大家聊聊我…

时间格式不能正常转换?

时间格式不能正常转换?@DateTimeFormat 注解 前台到后台的时间格式转换,对于GET 请求参数可以正常工作。对于 POST 请求会报反序列化错误POST 请求会使用 JSON 反序列化,不会使用 @DateTimeFormat 注解。POST 表单(…

群发红包系统

群发红包系统业务流程 发红包输入金额以及人数 创建红包订单(订单ID,金额,份数) 调用支付系统 红包订单支付之后红包就发出去了 钱先拆好(行锁分散,加大并发)抢红包抢红包业务群,检测当前是否有剩余钱 没有剩余…

day011

今日完成:mysql的初步认识以及cmd指令操作 明日完成:mysql 遇到问题:无

【黑马python】基础 5.Python 函数:参数 返回值 嵌套

笔记汇总目录【黑马python】8天python从入门到精通 - 汇总Python 函数代码示例代码示例代码示例代码示例代码示例代码示例代码示例代码示例代码示例代码示例代码示例代码示例代码示例参考链接黑马-4.Python 循环语句 0…

linux 命令

tar 命令 1、创建归档文件:将文件 file1、file2 和 directory 打包到一个名为 archive.tar 的归档文件中。 tar -cvf archive.tar file1 file2 directory-c: 创建新的归档文件-v: 显示详细输出,列出被添加到归档中的…

一试模拟试题(十七)problem 7 另(数竞相关)

一试模拟试题(十七)problem 7 另: 求式子 \(T = \sqrt{\cfrac{5-3 \sin \theta}{5+3 \cos \theta}}\) 的最大值 易知可以转化为点 \(P(5,5)\) 到以原点 \(O\) 为圆心,半径为 \(3\) 的圆的切线的斜率(较大的那一个…

PaddleOCR源码安装+centos7.6+python3.10

先自行安装python3,版本如下:[root@localhost IOPaint]# python3 --version Python 3.10.6安装gcc9# 安装 SCL 仓库 sudo yum install -y centos-release-scl# 安装 devtoolset-9(包含 GCC 9) sudo yum install -y…

以后尽量多更新

此前曾经注册网易博客,新浪博客,现在都没了,希望这个博客可以生存时间长一点

10/14

学习了有关递归的知识

算法模版

\(算法模版\)\(Author:\) 缪语博本文档基于 \(GPL-3.0 License\) 本文档 \(GitHub\) 储存库:model \(目录\) \(Contents\)快读快写线段树中国剩余定理(拓展)最短路算法LCA最近公共祖先高精度树链剖分网络流KMP算法…