Application Devs

An application centric standard for building cloud native app platforms.

Open Application Model [OAM] describes a runtime-agnostic model to build application centric platforms where developers focus on applications and defining deployable components.

Application Ops

While application operators (or the platform itself) are responsible for instantiating application components and assigning them operational capabilities.

Infrastructure Operators

And infrastructure operators are responsible for declaring, customizing, and maintaining the underlying capabilities that are available on the platform.

Read the Spec

Check out Ecosystem for the implementations and adoptions of OAM. ↓

Overview

Traditional Way

Building Platforms is Hard

  1. Developers spend time on infrastructure details instead of apps - ingress, labels, iptables rules, DNS, etc, and learning how the platform is implemented.
  2. Restricted platform capabilities - in-house APIs with opinionated abstractions and implementations, lack of interoperability.
  3. Runtime lock-in - platform is tightly coupled with execution runtime, which heavily impact on how you configure, develop and operate your app.

The OAM Way

An App-centric Model

  1. Application first - the platform is built around a self-contained app model, where operational characteristics are also part of app definition, free of infrastructure here.
  2. Clarity and extensibility - an open standard to modularize your platform capabilities into reusable pieces, with freedom to bring your own abstractions and implementations.
  3. Runtime agnostic - a consistent experience to deploy and operate your apps across on-prem clusters, cloud providers or even edge devices.

OAM is runtime-agnostic. Read the Intro doc for more background and user stories.

Examples




MyComponents.yml

Create components:


apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
  name: web
spec:
  workload:
    apiVersion: core.oam.dev/v1alpha2
    kind: ContainerizedWorkload
    spec:
      containers:
        - image: oamdev/helloworld-python:v1
          ports:
            - protocol: TCP
              containerPort: 9999
              name: http
---
apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
  name: function
spec:
  workload:
    apiVersion: faas.example.com/v1
    kind: Function
    spec:
      runtime: java8
      blobCodeUrl: http://xxx/f36286e6-f070-498f-a520-6dd3a589bd90
          

MyAppConfig.yml

Assign operational capabilities to components:


apiVersion: core.oam.dev/v1alpha2
kind: ApplicationConfiguration
metadata:
  name: myapp
spec:
  components:
    - componentName: web
      traits:
        - name: autoscaler
          spec:
            min: 1
            max: 100
        - name: rollout
          spec:
            canary:
              maxSurge: 25%
              maxUnavailable: 0
              steps:
                - setWeight: 10
    - componentName: function
      traits:
        - name: autoscaler
          spec:
            min: 0
            max: 1000
            triggers:
              - type: metaq
          

Ecosystem

4 Paradigm

4 Paradigm use OAM to build cloud native PaaS to serve its AI customers.

4 Paradigm
Crossplane

Crossplane: Crossplane offers the open source Kubernetes implementation of OAM that enables you to provision OAM applications and the cloud infrastructure they need directly from Kubernetes.

Crossplane
Alibaba Cloud

Alibaba Cloud Enterprise Distributed Application Service (EDAS) is a Kubernetes native application platform built by OAM.

AlibabaCloud EDAS

Partners


Mailing List
https://groups.google.com/forum/#!forum/oam-dev
Dev Meetings
Bi-weekly (Starting October 22nd, 2019), Tuesdays 10:30AM PST
APAC Friendly Dev Meetings
Bi-weekly (Starting October 28th, 2019), Mondays 4:30PM PST
Meeting invite
https://us04web.zoom.us/j/661104426
Meeting notes
Notes doc
IM Channel
https://gitter.im/oam-dev/