Open Application Model (OAM)

The Open Application Model (OAM) is an application-centric specification that is cloud provider agnostic. This greatly improves the reusability of components and reduces the friction of moving applications in multi-cloud environments. The NAPPTIVE platform supports launching and managing Applications that are defined using OAM standard as this reduces the complexity of working with low-level Kubernetes entities.

What is OAM?

The Open Application Model adds a new Application level entity to Kubernetes. Up to this point, to deploy a cloud native application in Kubernetes, a user would need to deploy a set of YAML files containing the different entities (Deployments, Pods, Services, etc.) that are part of the application. The main issue with this approach is that once deployed, the concept of application is no longer available in Kubernetes. If we want to check the status of the deployments associated with an application, either we use the labels/annotations approach to filter those, or there is not such an entity that logically groups them. With OAM we add a new application entity that will enable reasoning about its components more easily.

Moreover, by using OAM to represent applications, changes in deployment infrastructure such as moving from one cloud provider to another is no longer an issue since the translation of the Application to Kubernetes entities takes care of the subtle adaptations between different infrastructure providers.

Application rendering in Kubernetes Figure: An Application being translated into low-level Kubernetes entities


Who can benefit from OAM?

Several users can benefit from using the Open Application Model:

  • Developers: Can focus on creating the individual components defining their parameters. This greatly improves reusability of components among applications, providing at the same time a clear documentation into how a component can be parametrized and adapted for a particular use case.
  • Application operator: Focuses on deploying an application, making the required changes in terms of component parametrization, extensions using Traits, and deployment workflow. Having a top-level application entity makes easy to track component status and overall application state.
  • Platform team: Can introduce custom extensions (traits, policies, workflow steps) so that they can be applied to all the organization.

KubeVela

The Napptive Playground leverages KubeVela as the OAM runtime for Kubernetes deployments. In this way we take full advantages of all the OAM extensions that can help simplify the deployment and management of cloud native applications in modern Kubernetes infrastructure.

Napptive & KubeVela Figure: Napptive integration with KubeVela


What’s next