SlideShare a Scribd company logo
1 of 18
Running the next generation of cloud-native
applications using Open Application Model
Ryan Zhang
Staff Software Engineer, Alibaba Group
Twitter: ryanzhang_oss
Kubernetes is not built for applications
2
API & Primitives
code, app, CI/CD pipeline
Deployment Pod
Controller
HPA
Node
Sidecar
NetworkPolicy CR/CRD
Levels of Abstraction
scaling
• auto scale +100
instances when
latency > 10%
rollout
• promote the canary
instance with step of
10%
HorizontalPodAutoscaler
CustomMetricsServer
Prometheus
Service Monitor
Istio
Virtual Service
Deployment Ingress
Service
User Interfaces
YAML
GUI CLI IaC
YAML
YAML
YAML
Dev/ops are used to
what k8s provides
Current Solutions
控制器
Various Controller
Containers
VMs Load Balancer Database
RAM Network Storage
Pod Deployment Service Node Custom
Resource
Declarative API
Cloud capability
App Ops
Infra engineer
App Dev
Capacity
Manage
Rollout
Strategy
Logging
Monitoring
Access
Control
Traffic
Split
Application Platform
Source
To
Image
CI/CD
K8s PaaS
K8s
Did we miss something?
Open Application Model
OAM is an abstraction standard that allows platform builders to build
developer friendly, highly extensible applications platforms
Build abstractions!
Leverage k8s
extensibility!
How ???
Knative, OpenFaaS,
or DIY your own
abstraction!
auto scaling, CI
service mesh,
canary, blue-green,
just name it!
Designed for Platform Builders
• The building block and framework for creating application centric platforms
• Bring your own workloads
• Traits System
• manageable and discoverable capability system
• leveraging existing cloud native ecosystem
• Balance between extensibility and abstraction
• PaaS/Serverless Platform
• Team-centric (separation of concerns) workflow which endorses LightOps/NoOps
• Serverless by nature
• 100% developer level abstraction for workloads and operational capabilities
OAM Platform Architecture
End Users
Kubernetes
Installed as a k8s plugin
Declarative GitOps pattern
Flux
UI/UX:
Web Console, CLI
OAM Runtime
Capability Registry
Workload
Trait
Core Controller
ApplicationConfiguration
Component
Platform Builders
Logging
Monitoring
Scaling
Extend OAM capabilities
Git
Platform capabilities
exposed as APIs
Application Workflow
Application Code
Workload
Component
Trait
ApplicationConfiguration OAM Runtime
Infrastructure:
Kubernetes, Cloud Resources
Infra Ops Setting up and
maintaining infra
App Developer
Defining what code to run
App Operators
Defining how to run the app
with operations
Container, Serverless, VM, Job
Ingress, Storage, Scaling
Logging, Monitoring
ApplicationConfiguration
Workload: defines how services run
Trait: defines operational aspects of a service
Component: defines a functional unit of a service
ApplicationConfiguration: defines a complete config
attaching traits to all components of an app
Managing and operating
underlying resources
Components
Components
workload
apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
name: frontend
annotations:
description: Container workload
spec:
workload:
apiVersion: apps/v1
kind: Deployment
spec:
template:
spec:
containers:
- name: web
image: 'php:latest'
env:
- name: OAM_TEXTURE
value: texture.jpg
ports:
- containerPort: 8001
name: http
protocol: TCP
$ kubectl get deployment
NAME REVISION AGE
frontend-c8bb659c5 1 2d15h
frontend-a8eb65xfe 2 10m
$ kubectl get components
NAME WORKLOAD TYPE
frontend deployment.apps.k8s.io
Component is versionized instance of a workload
workload-v1
workload-v2
Persona: App Developer
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.
Platform builders are free to define
workloads at any abstraction level,
including cloud resources.
apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
name: frontend
annotations:
description: Container
workload
spec:
workload:
apiVersion: apps/v1
kind: Deployment
spec:
replicas: 3
selector:
matchLabels: app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.14.2
ports:
- containerPort: 80
apiVersion: core.oam.dev/v1alpha2
kind: Component
metadata:
name: frontend
annotations:
description: Container workload
spec:
workload:
apiVersion: apps.alibaba-inc/v1
kind: Containerized
spec:
image: nginx:1.14.2
deploy:
replicas: 3
Abstraction level: low
Abstraction level: high
Workloads
Traits and AppConfig
Component
Traits
Scaling
Rollout
Route
Cert
Traffic
AppConfig
workload
apiVersion: core.oam.dev/v1alpha2
kind: ApplicationConfiguration
metadata:
name: helloworld
spec:
components:
# 1st component
- componentName: frontend
traits:
- trait:
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
spec:
minReplicas: 1
maxReplicas: 10
- trait:
apiVersion: networking.alibaba-
inc.com/v1
kind: APIGateway
spec:
hostname: app.alibaba.com
path: /
service_port: 8001
# 2nd component
- componentName: redis
· Traits
· Declarative abstractions for operational capabilities
· AppConfig(Application Configuration)
· Bind given trait to component
Persona: App Operator
Platform add-ons apiVersion: core.oam.dev/v1alpha2
kind: TraitDefinition
metadata:
name: virtualservices.networking.istio.io
annotations:
alias: traffic
spec:
appliesTo:
- *.apps.k8s.io
conflictsWith:
- traffic-split.alimesh.io
definition: virtualservices.networking.istio.io
OAM K8s Plugin
Definitions
$ kubectl get traits
NAME DEFINITION APPLIES TO CONFLICTS
WITH
traffic virtualservices.networking.istio.io *.apps.k8s.io traffic-
split.alimesh.io
route route.core.oam.dev *.apps.k8s.io
cert cert.core.oam.dev *.apps.k8s.io
Register and discover k8s
capabilities (API resources)
as workloads or traits
# e.g.:Register Istio VirtualService as Traffic
trait
Persona: Platform Builder/Infra Operator
Demo time
Application Profile (a distribution template of software)
Website IOT Suite Data Pipeline Batch Job AI Training AI Inference
Combination of components and traits/scopes based on scenarios, categorized by Application and Configuration
Application Configuration
Container Function Cloud Resources
Scaling
Traffic Split
Canary
Blue-Green
A/B testing
Metrics
Logging
Monitoring
Dev Ops
OAM Platform Architecture
The community
OAM Adopters and End Users
Adopted OAM to Unify 10+
Application Platforms and
Empower Cloud Business.
Adopted OAM to Standardize
Application Management across
Multi-Clouds.
Announced OAM in
Its build conferences
Using OAM Platform to Deploy
and Manage Large services
Using OAM Platform to Deploy
and Manage Machine Learning
Applications.
• 20+ companies using OAM platforms
• 3 vendors to support OAM on cloud service
• 1,000+ OAM applications deployed in Alibaba
Questions?
Join the community meeting: meeting time in https://oam.dev/
OAM Specification: https://github.com/oam-dev/spec
OAM Runtime Repo: https://github.com/crossplane/oam-kubernetes-runtime
OAM Slack Channel: https://slack.crossplane.io/channel/oam
Twitter: https://twitter.com/oam_dev
Thank you

More Related Content

What's hot

01. lab instructions starting project
01. lab instructions   starting project01. lab instructions   starting project
01. lab instructions starting project
rajul14
 
How does the WSO2 App Factory Contribute to the Quick Deleivery of a Solution
How does the WSO2 App Factory Contribute to the Quick Deleivery of a SolutionHow does the WSO2 App Factory Contribute to the Quick Deleivery of a Solution
How does the WSO2 App Factory Contribute to the Quick Deleivery of a Solution
WSO2
 
Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)
Nordic APIs
 

What's hot (20)

A Hitchhiker's Guide to Cloud-Native API Gateways
A Hitchhiker's Guide to Cloud-Native API GatewaysA Hitchhiker's Guide to Cloud-Native API Gateways
A Hitchhiker's Guide to Cloud-Native API Gateways
 
Mule soft meetup_chandigarh_#7_25_sept_2021
Mule soft meetup_chandigarh_#7_25_sept_2021Mule soft meetup_chandigarh_#7_25_sept_2021
Mule soft meetup_chandigarh_#7_25_sept_2021
 
Case Study Telefonica
Case Study TelefonicaCase Study Telefonica
Case Study Telefonica
 
X-celerate 2019: Iterating fast with the MERN Stack
X-celerate 2019: Iterating fast with the MERN StackX-celerate 2019: Iterating fast with the MERN Stack
X-celerate 2019: Iterating fast with the MERN Stack
 
Nils Rhode - Does it always have to be k8s - TeC Day 2019
Nils Rhode - Does it always have to be k8s - TeC Day 2019Nils Rhode - Does it always have to be k8s - TeC Day 2019
Nils Rhode - Does it always have to be k8s - TeC Day 2019
 
Kasten securing access to your kubernetes applications
Kasten securing access to your kubernetes applicationsKasten securing access to your kubernetes applications
Kasten securing access to your kubernetes applications
 
What is an API Gateway?
What is an API Gateway?What is an API Gateway?
What is an API Gateway?
 
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
apidays LIVE Hong Kong 2021 - GraphQL : Beyond APIs, graph your enterprise by...
 
API Microservices with Node.js and Docker
API Microservices with Node.js and DockerAPI Microservices with Node.js and Docker
API Microservices with Node.js and Docker
 
Azure App Service
Azure App ServiceAzure App Service
Azure App Service
 
Microservices & API Gateways
Microservices & API Gateways Microservices & API Gateways
Microservices & API Gateways
 
01. lab instructions starting project
01. lab instructions   starting project01. lab instructions   starting project
01. lab instructions starting project
 
How does the WSO2 App Factory Contribute to the Quick Deleivery of a Solution
How does the WSO2 App Factory Contribute to the Quick Deleivery of a SolutionHow does the WSO2 App Factory Contribute to the Quick Deleivery of a Solution
How does the WSO2 App Factory Contribute to the Quick Deleivery of a Solution
 
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
apidays LIVE Hong Kong 2021 - Multi-Protocol APIs at Scale in Adidas by Jesus...
 
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
apidays LIVE LONDON - Discovering API Version differences with ease by Jaap B...
 
Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)Versioning strategy for a complex internal API (Konstantin Yakushev)
Versioning strategy for a complex internal API (Konstantin Yakushev)
 
02 api gateway
02 api gateway02 api gateway
02 api gateway
 
Creating an MVP with Oracle
Creating an MVP with OracleCreating an MVP with Oracle
Creating an MVP with Oracle
 
The Magic Behind Faster API Development, Testing and Delivery with API Virtua...
The Magic Behind Faster API Development, Testing and Delivery with API Virtua...The Magic Behind Faster API Development, Testing and Delivery with API Virtua...
The Magic Behind Faster API Development, Testing and Delivery with API Virtua...
 
apidays LIVE Paris 2021 - Using OpenAPI to configure your API Gateway by Ole ...
apidays LIVE Paris 2021 - Using OpenAPI to configure your API Gateway by Ole ...apidays LIVE Paris 2021 - Using OpenAPI to configure your API Gateway by Ole ...
apidays LIVE Paris 2021 - Using OpenAPI to configure your API Gateway by Ole ...
 

Similar to Running the-next-generation-of-cloud-native-applications-using-open-application-model-oam

Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おうOpen Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
kei omizo
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
QAware GmbH
 

Similar to Running the-next-generation-of-cloud-native-applications-using-open-application-model-oam (20)

Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おうOpen Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
 
Application Model for Cloud Deployment
Application Model for Cloud DeploymentApplication Model for Cloud Deployment
Application Model for Cloud Deployment
 
Serverless Application Development with SAM
Serverless Application Development with SAMServerless Application Development with SAM
Serverless Application Development with SAM
 
Serhiy Kalinets "Building Service Mesh with .NET Core"
Serhiy Kalinets "Building Service Mesh with .NET Core"Serhiy Kalinets "Building Service Mesh with .NET Core"
Serhiy Kalinets "Building Service Mesh with .NET Core"
 
Deep Dive on Serverless Stack
Deep Dive on Serverless StackDeep Dive on Serverless Stack
Deep Dive on Serverless Stack
 
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
Canadian CNCF: "Emissary-ingress 101: An introduction to the CNCF incubation-...
 
Azure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNETAzure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNET
 
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
ОЛЕГ МАЦЬКІВ «Crash course on Operator Framework» Lviv DevOps Conference 2019
 
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless OverviewOpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
OpenShift Meetup - Tokyo - Service Mesh and Serverless Overview
 
ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...
ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...
ECS19 - Damir Dobric - Designing and Operating modern applications with Micro...
 
kubernetes operators
kubernetes operatorskubernetes operators
kubernetes operators
 
Application Lifecycle Management in a Serverless World | AWS Public Sector Su...
Application Lifecycle Management in a Serverless World | AWS Public Sector Su...Application Lifecycle Management in a Serverless World | AWS Public Sector Su...
Application Lifecycle Management in a Serverless World | AWS Public Sector Su...
 
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
Kubernetes One-Click Deployment: Hands-on Workshop (Mainz)
 
OpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewOpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology Overview
 
AWS Serverless concepts and solutions
AWS Serverless concepts and solutionsAWS Serverless concepts and solutions
AWS Serverless concepts and solutions
 
Creating microservices architectures using node.js and Kubernetes
Creating microservices architectures using node.js and KubernetesCreating microservices architectures using node.js and Kubernetes
Creating microservices architectures using node.js and Kubernetes
 
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan GoksuSpring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
Spring Cloud Services with Pivotal Cloud Foundry- Gokhan Goksu
 
Si so product 1 day technical
Si so product 1 day technicalSi so product 1 day technical
Si so product 1 day technical
 
Kubernetes Operators - the next frontier in application automation - Ádám Sándor
Kubernetes Operators - the next frontier in application automation - Ádám SándorKubernetes Operators - the next frontier in application automation - Ádám Sándor
Kubernetes Operators - the next frontier in application automation - Ádám Sándor
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using Go
 

Recently uploaded

Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
amitlee9823
 
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
amitlee9823
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
amitlee9823
 
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
amitlee9823
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
amitlee9823
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
amitlee9823
 
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts ServiceCall Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
MarinCaroMartnezBerg
 
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
amitlee9823
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
amitlee9823
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Riyadh +966572737505 get cytotec
 

Recently uploaded (20)

Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Indiranagar Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
Call Girls Bommasandra Just Call 👗 7737669865 👗 Top Class Call Girl Service B...
 
Invezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signalsInvezz.com - Grow your wealth with trading signals
Invezz.com - Grow your wealth with trading signals
 
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
Call Girls Jalahalli Just Call 👗 7737669865 👗 Top Class Call Girl Service Ban...
 
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night StandCall Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
Call Girls In Bellandur ☎ 7737669865 🥵 Book Your One night Stand
 
BigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptxBigBuy dropshipping via API with DroFx.pptx
BigBuy dropshipping via API with DroFx.pptx
 
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
Call Girls Hsr Layout Just Call 👗 7737669865 👗 Top Class Call Girl Service Ba...
 
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Thane West Call On 9920725232 With Body to body massage...
 
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
Chintamani Call Girls: 🍓 7737669865 🍓 High Profile Model Escorts | Bangalore ...
 
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts ServiceCall Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
Call Girls In Shalimar Bagh ( Delhi) 9953330565 Escorts Service
 
FESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdfFESE Capital Markets Fact Sheet 2024 Q1.pdf
FESE Capital Markets Fact Sheet 2024 Q1.pdf
 
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort ServiceBDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
BDSM⚡Call Girls in Mandawali Delhi >༒8448380779 Escort Service
 
Predicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science ProjectPredicting Loan Approval: A Data Science Project
Predicting Loan Approval: A Data Science Project
 
BabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptxBabyOno dropshipping via API with DroFx.pptx
BabyOno dropshipping via API with DroFx.pptx
 
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
Escorts Service Kumaraswamy Layout ☎ 7737669865☎ Book Your One night Stand (B...
 
ELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptxELKO dropshipping via API with DroFx.pptx
ELKO dropshipping via API with DroFx.pptx
 
CebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptxCebaBaby dropshipping via API with DroFX.pptx
CebaBaby dropshipping via API with DroFX.pptx
 
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
Vip Mumbai Call Girls Marol Naka Call On 9920725232 With Body to body massage...
 
Sampling (random) method and Non random.ppt
Sampling (random) method and Non random.pptSampling (random) method and Non random.ppt
Sampling (random) method and Non random.ppt
 
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get CytotecAbortion pills in Doha Qatar (+966572737505 ! Get Cytotec
Abortion pills in Doha Qatar (+966572737505 ! Get Cytotec
 

Running the-next-generation-of-cloud-native-applications-using-open-application-model-oam

  • 1. Running the next generation of cloud-native applications using Open Application Model Ryan Zhang Staff Software Engineer, Alibaba Group Twitter: ryanzhang_oss
  • 2. Kubernetes is not built for applications 2 API & Primitives code, app, CI/CD pipeline Deployment Pod Controller HPA Node Sidecar NetworkPolicy CR/CRD Levels of Abstraction scaling • auto scale +100 instances when latency > 10% rollout • promote the canary instance with step of 10% HorizontalPodAutoscaler CustomMetricsServer Prometheus Service Monitor Istio Virtual Service Deployment Ingress Service User Interfaces YAML GUI CLI IaC YAML YAML YAML Dev/ops are used to what k8s provides
  • 3. Current Solutions 控制器 Various Controller Containers VMs Load Balancer Database RAM Network Storage Pod Deployment Service Node Custom Resource Declarative API Cloud capability App Ops Infra engineer App Dev Capacity Manage Rollout Strategy Logging Monitoring Access Control Traffic Split Application Platform Source To Image CI/CD K8s PaaS K8s
  • 4. Did we miss something?
  • 5. Open Application Model OAM is an abstraction standard that allows platform builders to build developer friendly, highly extensible applications platforms Build abstractions! Leverage k8s extensibility! How ??? Knative, OpenFaaS, or DIY your own abstraction! auto scaling, CI service mesh, canary, blue-green, just name it!
  • 6. Designed for Platform Builders • The building block and framework for creating application centric platforms • Bring your own workloads • Traits System • manageable and discoverable capability system • leveraging existing cloud native ecosystem • Balance between extensibility and abstraction • PaaS/Serverless Platform • Team-centric (separation of concerns) workflow which endorses LightOps/NoOps • Serverless by nature • 100% developer level abstraction for workloads and operational capabilities
  • 7. OAM Platform Architecture End Users Kubernetes Installed as a k8s plugin Declarative GitOps pattern Flux UI/UX: Web Console, CLI OAM Runtime Capability Registry Workload Trait Core Controller ApplicationConfiguration Component Platform Builders Logging Monitoring Scaling Extend OAM capabilities Git Platform capabilities exposed as APIs
  • 8. Application Workflow Application Code Workload Component Trait ApplicationConfiguration OAM Runtime Infrastructure: Kubernetes, Cloud Resources Infra Ops Setting up and maintaining infra App Developer Defining what code to run App Operators Defining how to run the app with operations Container, Serverless, VM, Job Ingress, Storage, Scaling Logging, Monitoring ApplicationConfiguration Workload: defines how services run Trait: defines operational aspects of a service Component: defines a functional unit of a service ApplicationConfiguration: defines a complete config attaching traits to all components of an app Managing and operating underlying resources
  • 9. Components Components workload apiVersion: core.oam.dev/v1alpha2 kind: Component metadata: name: frontend annotations: description: Container workload spec: workload: apiVersion: apps/v1 kind: Deployment spec: template: spec: containers: - name: web image: 'php:latest' env: - name: OAM_TEXTURE value: texture.jpg ports: - containerPort: 8001 name: http protocol: TCP $ kubectl get deployment NAME REVISION AGE frontend-c8bb659c5 1 2d15h frontend-a8eb65xfe 2 10m $ kubectl get components NAME WORKLOAD TYPE frontend deployment.apps.k8s.io Component is versionized instance of a workload workload-v1 workload-v2 Persona: App Developer
  • 10. 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. Platform builders are free to define workloads at any abstraction level, including cloud resources. apiVersion: core.oam.dev/v1alpha2 kind: Component metadata: name: frontend annotations: description: Container workload spec: workload: apiVersion: apps/v1 kind: Deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.14.2 ports: - containerPort: 80 apiVersion: core.oam.dev/v1alpha2 kind: Component metadata: name: frontend annotations: description: Container workload spec: workload: apiVersion: apps.alibaba-inc/v1 kind: Containerized spec: image: nginx:1.14.2 deploy: replicas: 3 Abstraction level: low Abstraction level: high Workloads
  • 11. Traits and AppConfig Component Traits Scaling Rollout Route Cert Traffic AppConfig workload apiVersion: core.oam.dev/v1alpha2 kind: ApplicationConfiguration metadata: name: helloworld spec: components: # 1st component - componentName: frontend traits: - trait: apiVersion: autoscaling/v2beta2 kind: HorizontalPodAutoscaler spec: minReplicas: 1 maxReplicas: 10 - trait: apiVersion: networking.alibaba- inc.com/v1 kind: APIGateway spec: hostname: app.alibaba.com path: / service_port: 8001 # 2nd component - componentName: redis · Traits · Declarative abstractions for operational capabilities · AppConfig(Application Configuration) · Bind given trait to component Persona: App Operator
  • 12. Platform add-ons apiVersion: core.oam.dev/v1alpha2 kind: TraitDefinition metadata: name: virtualservices.networking.istio.io annotations: alias: traffic spec: appliesTo: - *.apps.k8s.io conflictsWith: - traffic-split.alimesh.io definition: virtualservices.networking.istio.io OAM K8s Plugin Definitions $ kubectl get traits NAME DEFINITION APPLIES TO CONFLICTS WITH traffic virtualservices.networking.istio.io *.apps.k8s.io traffic- split.alimesh.io route route.core.oam.dev *.apps.k8s.io cert cert.core.oam.dev *.apps.k8s.io Register and discover k8s capabilities (API resources) as workloads or traits # e.g.:Register Istio VirtualService as Traffic trait Persona: Platform Builder/Infra Operator
  • 14. Application Profile (a distribution template of software) Website IOT Suite Data Pipeline Batch Job AI Training AI Inference Combination of components and traits/scopes based on scenarios, categorized by Application and Configuration Application Configuration Container Function Cloud Resources Scaling Traffic Split Canary Blue-Green A/B testing Metrics Logging Monitoring Dev Ops OAM Platform Architecture
  • 16. OAM Adopters and End Users Adopted OAM to Unify 10+ Application Platforms and Empower Cloud Business. Adopted OAM to Standardize Application Management across Multi-Clouds. Announced OAM in Its build conferences Using OAM Platform to Deploy and Manage Large services Using OAM Platform to Deploy and Manage Machine Learning Applications. • 20+ companies using OAM platforms • 3 vendors to support OAM on cloud service • 1,000+ OAM applications deployed in Alibaba
  • 17. Questions? Join the community meeting: meeting time in https://oam.dev/ OAM Specification: https://github.com/oam-dev/spec OAM Runtime Repo: https://github.com/crossplane/oam-kubernetes-runtime OAM Slack Channel: https://slack.crossplane.io/channel/oam Twitter: https://twitter.com/oam_dev

Editor's Notes

  1. I hope that you all know what Kubernetes is and if you don’t, congratulations, you are at the right webinar. We are not going to talk about what K8s is but more of what it is not. K8s is not for applications Developers application, and CI/CD pipelines. But if you look at our k8s cluster, what it provides are workloads like Deployment, StatefulSet, container level primitives like Sidecar, Pod, and infrastructure details like NetworkPolicy etc. The second issue is levels of abstraction. For example, for application operators in our company, they are working on policies like how to do auto scaling, and how to do automatic progressive rollout. But what we expose to them, however, are k8s Service, Ingress, Prometheus, and Istio Virtual Service. Yes, as k8s expert like us, it’s straightforward to assemble them into rollout strategy or autoscaling policy, but these primitives don’t make any sense from application operators perspective. The last issue is actually the worst one, it is the user interface. As platform builders, we think k8s declarative API is very powerful and extensible, but our users definitely don’t agree with it. They want to work with human readable interfaces like dashboard, command line tool, or Infra-as-code, writing k8s YAML files however are like writing assembly language from their perspective and no-one want to do that.
  2. So to solve this problem, many companies and teams set out to build their own application platforms. K8s is actually an excellent platform for that. What we normally do is Also, each application needs a different paas, FAAS/CloudRun/Batch/AI/IOT When the developers need more features, the platform team will triage it and put in on a sprint board and work on it.
  3. This approach works fine to some extent but did we miss something? Yes, the k8s based application platfrom
  4. Here is the dilemma for k8s application platform builders, one on side, they want to provide abstractions…. AI/IOT/HPC What we come up is an open application model, We view it as a standard that can help solve this dilemma by providing a unified cloud native application representation
  5. The standard abstraction we set out to do is designed for platform builders. It served as the building block This allows the platform builders to provide the following features 1. As a by product, it also naturally enables the platform builder to build
  6. They will create a component that is based on a workload definition template The infrastructure team will maintain the on-premesis or cloud resources such as VM/Network/Storage You can see that each role is well defined and that’s where the separation of concern comes and what we mean by “team centric”
  7. Now let’s dive into some details. All OAM concepts are defined by Kubernetes API resource model, however OAM is not a Kubernetes only model. Let’s start with the most developer facing resource in OAM. For example, Component is essentially a template object for your workload, and it’s verisonized. If the developer modified this Component YAML file, it will generate a new revision of Deployment in your cluster which is immutable.
  8. You may ask what’s the point of having a component, why not just use workload. Workload alone is not enough ,there is node Affinity, tolerance, PreemptionPolicy, etc.
  9. For traits and application configurations, they are k8s API resources as well. In application configuration of this example, it referenced two components, the frontend, and redis. And it binds pod autoscaler and APIGateway as traits for the frontend component. So the application configuration will be used as a self-contained application definition file which includes every dependency and capability your workloads need to run.
  10. Finally, we also want to see that the platform offer register and discover capabilities. This is something that is not part of the OAM spec yet but we envision it to be an essential part of any OAM based platform. The reason is without That’s why we have introduced Workload/Trait/Scope definition. Same applies to the worklaod
  11. This slide was created by Product Management Center. If you have any feedback, please contact Henry LI (鸿锐).
  12. This slide was created by Product Management Center. If you have any feedback, please contact Henry LI (鸿锐).