Microsoft and Alibaba Back Open Application Model for Cloud Apps
Microsoft and Alibaba Cloud on Wednesday described an Open Application Model (OAM) for Web applications.
OAM is a standard for building native cloud applications using "microservices" and container technologies, with a goal of establishing a platform-agnostic approach. It's kind of like the old "service-oriented architecture" dream, except maybe with less complexity.
Microsoft's project leads described OAM in this announcement.
The OAM standard is currently at the draft stage, and the project is being overseen by the nonprofit Open Web Foundation. Microsoft apparently doesn't think too highly of the Open Web Foundation as its "goal is to bring the Open Application Model to a vendor-neutral foundation," the announcement explained.
Additionally, Microsoft and Alibaba Cloud disclosed that there's an OAM specification specifically designed for Kubernetes, the open source container orchestration solution for clusters originally fostered by Google. This OAM implementation, called "Rudr," is available at the "alpha" test stage and is designed to help manage applications on Kubernetes clusters.
OAM can be used with Kubernetes, but it's also a more general approach to software development, configuration and infrastructure concerns, according to the OAM project leads:
While our initial open implementation of OAM, named Rudr, is built on top of Kubernetes, the Open Application Model itself is not tightly bound to Kubernetes. It is possible to develop implementations for numerous other environments including small-device form factors, like edge deployments and elsewhere, where Kubernetes may not be the right choice. Or serverless environments where users don't want or need the complexity of Kubernetes.
Basic OAM concepts can be found in the spec's description. It outlines how the spec will account for the various roles involved with building, running and porting cloud-native apps. Those roles include software development (called the "application developer" role), configuration (the "application operator" role) and IT infrastructure (the "infrastructure operator" role). The concept is illustrated in the following diagram:
The roles aspect of the spec is part of its "separation of concerns" design principles, where "architectural choices are made with reference to the discrete problems being solved."
The overall goal of the OAM project is to create a "vendor-neutral, community-owned spec" that will let developers and IT pros set up reusable elements for cloud-based applications that will work across platforms, while still taking advantage of specific platform characteristics. Here's how that was described:
The goal of the specification is to provide a common way to describe applications agnostic to any specific container runtime, orchestration software, cloud provider, or hardware configuration, with clearly defined roles for developers and operators, while still allowing implementations to make use of the native APIs, tools, and features that are unique to the implementation and its underlying platform.
The OAM spec further contains definitions for Components (defined as "runnable units"), Workload Types, Traits (which are infrastructure concerns for IT pros), Application Scopes (boundaries for Components) and Application Configuration (configurations and metadata descriptions). The spec defines an application as "a collection of components with a set of operational traits and scoped together into one or more application boundaries."
Developers and application operators will use YAML files to support these applications, according to the OAM's "Introduction" document.
The Dapr Project
Microsoft also announced on Wednesday an alpha test release of Dapr, which is another open source effort to support cloud-based applications built using microservices. Dapr is a platform-agnostic, portable, event-driven runtime that lets developers use their preferred language and framework (see chart):
Developers can use Dapr's open APIs, based on HTTP or gRPC, which can be "called from any programming language," but Dapr also has a command-line interface. Dapr can run on various infrastructure, according to its GitHub description.
"Dapr runs natively on Kubernetes, as a standalone binary on your machine, on an IoT device, or as a container tha[t] can be injected into any system, in the cloud or on-premises," the GitHub description explained.
The idea behind Dapr is to permit applications built using microservices to be portable between "cloud and edge" computing infrastructures, according to Microsoft's description. Currently, developers face portability issues. They have to solve "the same distributed system problems such as state management, resilient method calling and handling events" with their microservices-based apps, it explained.
Microsoft is currently looking to lodge the Dapr project with "a vendor-neutral foundation to enable open governance and collaboration." It's planning to share more about Dapr at its coming Ignite event in November.
Kurt Mackie is senior news producer for the 1105 Enterprise Computing Group.