Kubernetes / Open Source / Software Development

Open Application Model: A Vendor-Neutral Spec for Modular Apps

18 Oct 2019 9:20am, by

A newly announced open source project from Microsoft and Alibaba Cloud, the Open Application Model (OAM) aims to separate the concerns of the developer, application operator and infrastructure operator.

The project is being developed under the Open Web Foundation, but the goal is to find a vendor-neutral foundation as a home for it.

The initial implementation of the project, called Rudr, is built on Kubernetes, but the model is not bound to that environment. Rather it can be implemented small-device form factors, like edge deployments or serverless environments where Kubernetes might not be the best choice, according to the project leads.

“Separating the application definition from the operational details of the cluster enables application developers to focus on the key elements of their application rather than the operational details of where it deploys,” the project leads say in a Microsoft blog post announcing the technology.

“Furthermore, the separation of concerns also allows for platform architects to develop re-usable components and for application developers to focus on integrating those components with their code to quickly and easily build reliable applications.”

Developers are spending more and more time on the infrastructure tooling of their apps, on security, performance, configuration and concerns relating to where the app will run, rather than just the app itself.

This model provides an opinionated workflow with separation between the roles of developers and operators while creating a standard approach that works across cloud platforms and edge devices.

In the model, application developers are responsible for defining each of the components as a ComponentSchematic YAML. These modules can then be repackaged in multiple ways.

Application operators are responsible for creating instances of those components and apply operational characteristics, such as replica size, autoscaling policy, ingress points, and traffic routing rules in an ApplicationConfiguration YAML. Individual instances are defined by Traits, which can be configured to the unique operating requirements, such as compliance and security of a particular environment.

And infrastructure operators are responsible for declaring, installing, and maintaining the underlying services that are available on the platform, such as a particular load balancer.

“The power of the Open Application Model comes from the underlying platforms that implements the model, which can surface the capabilities that make the underlying platforms unique and useful through OAM in a way that is consistent across any platform that supports the model,” the documentation states.

“Focused on the separation of development concerns from operational considerations through a platform-agnostic specification, the Open Application Model brings modular, extensible, and portable design to building and delivering applications on platforms like Kubernetes,” the project leads say.

“Our aspiration is to build a vendor-neutral, community-owned spec and the most popular APIs will be embraced and added to the specification over time. In this way, the evolution will ensure that most users will be successful in building cloud native applications via the Open Application Model.”

Image by Frauke Feind from Pixabay.