OAM


OAM

  1. 定义
  2. Open Application Model(OAM)是一种用于描述和管理云原生应用程序的规范。它旨在提供一个标准化的方式来定义应用的各个组件、它们之间的关系以及如何在云原生环境中进行部署和运维。
  3. 核心概念
  4. Component(组件)
    • 这是OAM应用的基本构建块。一个组件可以是一个微服务、一个数据库、一个消息队列等。例如,一个基于Spring Boot开发的用户认证微服务就是一个组件,它有自己的代码、配置文件等。组件定义了应用的功能单元,并且可以独立开发、测试和部署。
  5. Trait(特性)
    • 用于描述组件的非功能性需求。比如,一个组件可能需要具备高可用性、自动伸缩、日志记录等特性。以自动伸缩特性为例,通过配置自动伸缩的Trait,可以让应用根据负载情况自动调整组件的实例数量,从而更好地应对流量高峰。
  6. Scope(范围)
    • 定义了组件的作用域,比如它是在一个集群内运行,还是跨越多个集群。这有助于管理应用在不同环境中的部署范围,例如一个全局的配置管理组件可能需要在多个集群范围内进行部署,以确保所有集群的配置一致性。
  7. 工作流程
  8. 应用定义阶段
    • 开发人员和运维人员一起根据应用的功能和需求,定义组件、特性和范围。他们使用OAM规范的配置文件(通常是YAML格式)来描述应用的架构。例如,对于一个电商应用,可能会定义一个商品服务组件、一个订单服务组件,为商品服务组件配置缓存特性以提高性能,并且确定这些组件在集群内的部署范围。
  9. 部署阶段
    • 基于定义好的OAM配置,平台可以将应用部署到云原生环境中。这个过程涉及到将组件的容器镜像(如果是基于容器的组件)拉取到集群节点,并根据特性和范围的要求进行配置。例如,根据自动伸缩特性的配置,平台会设置好监控指标和伸缩规则,以便在运行时进行自动伸缩。
  10. 运行和运维阶段
    • 在应用运行过程中,运维人员可以根据OAM配置来管理和监控应用。他们可以通过修改特性的配置来调整应用的行为,比如调整日志的级别或者更新自动伸缩的参数。同时,OAM也支持应用的升级和回滚操作,以确保应用的稳定性和可靠性。
  11. 优势
  12. 标准化协作
    • 它使得开发人员、运维人员和平台团队能够使用统一的语言来描述和管理应用。开发人员可以专注于组件的功能实现,运维人员可以通过配置特性来满足非功能性需求,平台团队可以更好地理解应用的部署和运维要求,从而提高团队之间的协作效率。
  13. 云原生适配性
    • OAM是为云原生环境量身定制的,它能够很好地与容器编排平台(如Kubernetes)配合使用。这使得应用可以充分利用云原生的优势,如容器化带来的隔离性、可移植性和动态资源分配等特性,方便应用在不同的云平台之间进行迁移和部署。
  14. 灵活性和可扩展性
    • 可以方便地添加新的组件、特性和范围定义,以适应不断变化的应用需求。例如,当应用需要集成新的中间件或者增加新的安全特性时,可以通过在OAM配置中添加相应的组件和特性来实现,而不需要对整个应用架构进行大规模的重构。

Open Application Model (OAM).

官网

github仓库