知识卡片

OAM用四个自定义资源分离开发运维平台三种角色的关注点

结构图卡

内容

开放应用模型(OAM,阿里云与微软2019年联合发布)诊断出的问题和 [[Kubernetes封装了服务集群却没有真正封装应用是复杂性的根源]]一致: 让开发、运维、平台三种角色长期共同盯着同一份All-in-One的资源配置文件, 不会擦出火花,只会让配置越改越复杂。OAM把云原生应用拆成四个自定义 资源,分别对应一种角色的关注点。Component(服务组件)抽象开发人员该 关心的元素——应用名字、自述、容器镜像、运行参数。Workload(工作负荷) 决定应用的运行模式,每个Component都要指定自己的Workload类型(OAM按 “是否可访问、是否可复制、是否长期运行”预定义了六种,也可以用CRD和 Operator扩展)。Trait(运维特征)封装模块化的运维能力(日志收集、 负载均衡、水平扩缩容等预定义好参数的能力单元),把运维人员日常靠Shell 脚本手工拼凑的操作固化成可复用组件——这是OAM针对性解决的一个具体痛点: 开发活动早就有丰富的复用手法,运维活动却长期停留在”写个脚本”的原始 阶段。Application Scope(应用边界)按网络策略、健康度量策略等特性把 多个Component划入一个或多个作用域,便于统一配置管理。把Component(必需)、 Trait(必需)、Scope(非必需)组合实例化,就形成完整的Application Configuration。角色分工因此变得清晰:开发人员管Component,运维人员把 Component和Trait组合绑定成Application Configuration,平台人员/基础 设施提供方负责把这些自定义资源解释、映射到真实基础设施上——各自只 聚焦自己最专业的那一层,不必再共同面对一份混杂了所有关注点的配置文件。

结构图

flowchart TD
    A[开发人员] -->|管理| B[Component: 名字/镜像/运行参数]
    B --> C[Workload: 运行模式类型]
    D[运维人员] -->|绑定| E[Trait: 日志/负载均衡/扩缩容等可复用运维能力]
    B & E --> F[Application Configuration]
    G[Application Scope: 按网络/健康策略划分边界] --> F
    H[平台/基础设施提供方] -->|解释并映射到真实基础设施| F

参考来源

- 位置:《凤凰架构:构建可靠的大型分布式系统》第11章"虚拟化容器"11.3.4节 "开放应用模型"(源文件:_epub-src对应OEBPS/Text/chapter142.xhtml) - 结论依据:原文定义Component/Workload/Trait/Application Scope/ Application Configuration五个概念及其对应的角色关注点,并说明开发/ 运维/平台三种角色如何分工协作、各自聚焦更专业的工作,直接支撑本卡片 的结构梳理。 - 原始内容:开放应用模型思想的核心是如何分离开发人员、运维人员与平台 人员的关注点……OAM的Trait就用于封装模块化后的运维能力……开发人员 负责管理Component;运维人员负责将Component组合并与Trait绑定变成 Application Configuration;平台人员或基础设施提供方负责提供OAM的 解释能力。