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

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 GatewaysQAware GmbH
 
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_2021Lalit Panwar
 
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 StackHaufe-Lexware GmbH & Co KG
 
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 2019Haufe-Lexware GmbH & Co KG
 
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 applicationsLibbySchulze
 
What is an API Gateway?
What is an API Gateway?What is an API Gateway?
What is an API Gateway?LunchBadger
 
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...apidays
 
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 DockerApigee | Google Cloud
 
Azure App Service
Azure App ServiceAzure App Service
Azure App ServiceBizTalk360
 
Microservices & API Gateways
Microservices & API Gateways Microservices & API Gateways
Microservices & API Gateways Kong Inc.
 
01. lab instructions starting project
01. lab instructions   starting project01. lab instructions   starting project
01. lab instructions starting projectrajul14
 
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 SolutionWSO2
 
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
 
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...apidays
 
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
 
Creating an MVP with Oracle
Creating an MVP with OracleCreating an MVP with Oracle
Creating an MVP with OracleFranco Ucci
 
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...SmartBear
 
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 ...apidays
 

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 next-gen cloud apps using Open Application Model

Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おうOpen Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おう
Open Shift.Run2019 マイクロサービスの開発に疲れる前にdaprを使おうkei omizo
 
Application Model for Cloud Deployment
Application Model for Cloud DeploymentApplication Model for Cloud Deployment
Application Model for Cloud DeploymentJim Kaskade
 
Serverless Application Development with SAM
Serverless Application Development with SAMServerless Application Development with SAM
Serverless Application Development with SAMAmazon Web Services
 
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"Fwdays
 
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-...Daniel Bryant
 
Azure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNETAzure Cloud Application Development Workshop - UGIdotNET
Azure Cloud Application Development Workshop - UGIdotNETLorenzo Barbieri
 
ОЛЕГ МАЦЬКІВ «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 2019UA DevOps Conference
 
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 OverviewMaría Angélica Bracho
 
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...European Collaboration Summit
 
kubernetes operators
kubernetes operatorskubernetes operators
kubernetes operatorsJuraj Hantak
 
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...Amazon Web Services
 
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
 
OpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewOpenShift Taiwan Vol.1 Technology Overview
OpenShift Taiwan Vol.1 Technology OverviewJason Peng
 
AWS Serverless concepts and solutions
AWS Serverless concepts and solutionsAWS Serverless concepts and solutions
AWS Serverless concepts and solutionsElenaIvannikova3
 
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 KubernetesPaul Goldbaum
 
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 GoksuVMware Tanzu
 
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ándorPROIDEA
 
Operator SDK for K8s using Go
Operator SDK for K8s using GoOperator SDK for K8s using Go
Operator SDK for K8s using GoCloudOps2005
 

Similar to Running next-gen cloud apps using Open Application Model (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

ASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel CanterASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel Cantervoginip
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceSapana Sha
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样vhwb25kk
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort servicejennyeacort
 
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝DelhiRS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhijennyeacort
 
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一F La
 
办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degreeyuu sss
 
Predicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdfPredicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdfBoston Institute of Analytics
 
RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.natarajan8993
 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024thyngster
 
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一fhwihughh
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfSocial Samosa
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理e4aez8ss
 
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改yuu sss
 
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
04242024_CCC TUG_Joins and Relationships
04242024_CCC TUG_Joins and Relationships04242024_CCC TUG_Joins and Relationships
04242024_CCC TUG_Joins and Relationshipsccctableauusergroup
 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Colleen Farrelly
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)jennyeacort
 
办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一
办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一
办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一F La
 

Recently uploaded (20)

E-Commerce Order PredictionShraddha Kamble.pptx
E-Commerce Order PredictionShraddha Kamble.pptxE-Commerce Order PredictionShraddha Kamble.pptx
E-Commerce Order PredictionShraddha Kamble.pptx
 
ASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel CanterASML's Taxonomy Adventure by Daniel Canter
ASML's Taxonomy Adventure by Daniel Canter
 
Call Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts ServiceCall Girls In Dwarka 9654467111 Escorts Service
Call Girls In Dwarka 9654467111 Escorts Service
 
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
1:1定制(UQ毕业证)昆士兰大学毕业证成绩单修改留信学历认证原版一模一样
 
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
9711147426✨Call In girls Gurgaon Sector 31. SCO 25 escort service
 
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝DelhiRS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
RS 9000 Call In girls Dwarka Mor (DELHI)⇛9711147426🔝Delhi
 
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
办理(Vancouver毕业证书)加拿大温哥华岛大学毕业证成绩单原版一比一
 
办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
办美国阿肯色大学小石城分校毕业证成绩单pdf电子版制作修改#真实留信入库#永久存档#真实可查#diploma#degree
 
Predicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdfPredicting Salary Using Data Science: A Comprehensive Analysis.pdf
Predicting Salary Using Data Science: A Comprehensive Analysis.pdf
 
RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.RABBIT: A CLI tool for identifying bots based on their GitHub events.
RABBIT: A CLI tool for identifying bots based on their GitHub events.
 
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
Consent & Privacy Signals on Google *Pixels* - MeasureCamp Amsterdam 2024
 
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
办理学位证纽约大学毕业证(NYU毕业证书)原版一比一
 
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdfKantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
Kantar AI Summit- Under Embargo till Wednesday, 24th April 2024, 4 PM, IST.pdf
 
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
科罗拉多大学波尔得分校毕业证学位证成绩单-可办理
 
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
专业一比一美国俄亥俄大学毕业证成绩单pdf电子版制作修改
 
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Defence Colony Delhi 💯Call Us 🔝8264348440🔝
 
04242024_CCC TUG_Joins and Relationships
04242024_CCC TUG_Joins and Relationships04242024_CCC TUG_Joins and Relationships
04242024_CCC TUG_Joins and Relationships
 
Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024Generative AI for Social Good at Open Data Science East 2024
Generative AI for Social Good at Open Data Science East 2024
 
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
Call Us ➥97111√47426🤳Call Girls in Aerocity (Delhi NCR)
 
办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一
办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一
办理(UWIC毕业证书)英国卡迪夫城市大学毕业证成绩单原版一比一
 

Running next-gen cloud apps using Open Application Model

  • 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 (鸿锐).