Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building the next generation of cloud-native applications

Building the next generation of cloud-native applications

This webinar is a presentation of the latest v1alpha2 specification of the Open Application Model. In this talk, we will give a detailed explanation of the new features and improvements in the new spec. We will also give a live demo that deployed one application to two different clusters.


Ryan Zhang

May 27, 2020

Other Decks in Technology


  1. Building the next generation of cloud-native applications -- A deep

    dive to the latest OAM specification
  2. ©2020 Alibaba Cloud. All rights reserved. Information and views expressed

    in this document, including URL and other internet website references, may change without notice. You bear the risk of using it. This document does not provide you with any legal rights to any intellectual property in any Alibaba Cloud product.
  3. Ryan Zhang Staff Software Development Engineer Alibaba Cloud y.zhang@alibaba-inc.com Twitter:

    @ryanzhang_oss Github: @ryanzhang-oss
  4. Open Application Model

  5. What does OAM bring to the table Application centric Interoperability

    Separation of concerns Allows developers to focus on applications, not operational or infrastructure details Clearly defined responsibilities for application developers, operators, and infrastructure engineers Standard and consistent application model across different platforms
  6. OAM Runtime Core The Workflow OAM Application Traits/Scopes OAM platform

    IoT and Edge Cloud On-Premises Platform builder/Infrastructure Engineer Ingress Canary Blue/Green A/B Auto Scaling Network Scope Application Operator Components Application Developer OAM Application
  7. What’s new with OAM • OAM spec is now at

    release v1alpha2 • More extensible • Open up the definition of workload/trait/scope • Component is fully customizable for application operators • More Kubernetes friendly • Allow user to bring in their existing customize resources • New runtime work seamlessly with operator framework
  8. What’s new with OAM • We now have a new

    Golang based core implementation • Fully compatible with mainstream controller/operator framework • Decouple the application from the trait/workload/scope • We will run a demo using the new runtime
  9. WorkloadDefinition A workloadDefinition is a way for an infrastructure operator

    or platform builder to define what components are available to application developers on a given platform. apiVersion: core.oam.dev/v1alpha2 kind: WorkloadDefinition metadata: name: databases.alibaba.crossplane.io spec: definitionRef: name: databases.alibaba.crossplane.io --- apiVersion: core.oam.dev/v1alpha2 kind: WorkloadDefinition metadata: name: containerizedworkloads.core.oam.dev spec: definitionRef: name: containerizedworkloads.core.oam.dev childResourceKinds: - apiVersion: apps/v1 kind: Deployment
  10. Component Component B Component C Component D Components describe functional

    units that may be instantiated as part of a larger distributed application. apiVersion: core.oam.dev/v1alpha2 kind: Component metadata: name: flights-api spec: workload: apiVersion: core.oam.dev/v1alpha2 kind: ContainerizedWorkload metadata: name: flights-api spec: osType: linux arch: amd64 containers: - name: flights-api image: rudr-flights-api:0.49 env: - name: DATA_SERVICE_URI value: "foo" ports: - name: http containerPort: 3003 protocol: TCP parameters: - name: dataUri description: uri for data-api pod required: true fieldPaths: - spec.containers[0].env[0].value Components
  11. TraitDefinition Component A trait is a runtime overlay that augments

    a component with additional features. It allows application operators to decide the configuration of components without involving application developers. apiVersion: core.oam.dev/v1alpha2 kind: TraitDefinition metadata: name: manualscalertraits.core.oam.dev spec: definitionRef: name: manualscalertraits.core.oam.dev Trait
  12. Scope apiVersion: core.oam.dev/v1alpha2 kind: ScopeDefinition metadata: name: NetworkScopes.core.oam.dev spec: definitionRef:

    name: NetworkScopes.core.oam.dev apiVersion: core.oam.dev/v1alpha2 kind: NetworkScope metadata: name: example-vpc-network spec: networkId: cool-vpc-network subnetIds: - cool-subnetwork - cooler-subnetwork - coolest-subnetwork internetGatewayType: nat A scope can be used to group components together into logical applications or enforce a common runtime behavior Network Scope Y Network Scope X Component B Component C Component D Component A
  13. Application Configuration Defines an instance of an application with its

    operational capabilities ApplicationConfiguration Application Configuration Component B Component C Component D Traits Traits Traits Component A Traits Network Scope X
  14. Flight Tracker Application Demo

  15. Reference https://github.com/crossplane/oam-kubernetes-runtime https://github.com/crossplane/addon-oam-kubernetes-local https://github.com/oam-dev/spec https://groups.google.com/forum/#!forum/oam-dev weekly community call OAM Community

    Calendar https://www.infoq.com/articles/oam-alibaba/
  16. ©2020 Alibaba Cloud. All rights reserved. www.alibabacloud.com