知识卡片
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