Slide 1

Slide 1 text

Autoscale Applications based on external events with KEDA Nilesh Gule @nileshgule

Slide 2

Slide 2 text

$whoami { “name” : “Nilesh Gule”, “website” : “https://www.HandsOnArchitect.com", “github” : “https://GitHub.com/NileshGule" “twitter” : “@nileshgule”, “linkedin” : “https://www.linkedin.com/in/nileshgule”, “YouTube” : “https://www.YouTube.com/@nilesh-gule” “likes” : “Technical Evangelism, Cricket”, “co-organizer” : “Azure Singapore UG” }

Slide 3

Slide 3 text

No content

Slide 4

Slide 4 text

@nileshgule KEDA Kubernets based Event Driven Autoscaling Scaling in Kubernetes KEDA Overview TechTalks demo with RabbitMQ Autoscaling with KEDA KEDA Architecture Agenda

Slide 5

Slide 5 text

Pre-requisites • Self contained application with all its dependencies Docker • Orchestrates containers • Self healing • Service discovery • Scaling Kubernetes • Dockerhub / private container registry • Repository for storing container images Container Registry • Managed Kubernetes service on Azure • Native integration with other Azure services like Azure Active Directory (AAD), Azure Container registry (ACR), Azure Container Instances (ACI), Azure Monitor etc. Azure Kubernetes Service (AKS)

Slide 6

Slide 6 text

Kubernetes scaling options Horizontal Pod Autoscaler Vertical Pod Autoscaler Cluster Autoscaler Manual

Slide 7

Slide 7 text

TechTalks Application Architecture TechTalks Consumer TechTalks Producer TechTalks Frontend (UI) Message Broker Polyglot Programming

Slide 8

Slide 8 text

Dapr overview

Slide 9

Slide 9 text

Techtalks-producer Azure-Singapore-cluster demo-azure-singapore-rg ngacrregistry acrResourceGroup Techtalks-consumer TechTalks with Dapr - AKS

Slide 10

Slide 10 text

@nileshgule Demo KEDA in action

Slide 11

Slide 11 text

KEDA Architecture

Slide 12

Slide 12 text

ScaledObject apiVersion: keda.k8s.io/v1alpha1 kind: ScaledObject metadata: name: rabbitmq-consumer namespace: default labels: deploymentName: rabbitmq-consumer-deployment spec: scaleTargetRef: deploymentName: rabbitmq-consumer pollingInterval: 5 # Optional. Default: 30 seconds cooldownPeriod: 30 # Optional. Default: 300 seconds minReplicaCount: 1 # Optional. Default: 0 maxReplicaCount: 30 # Optional. Default: 100 triggers: - type: rabbitmq metadata: queueName: hello queueLength : ‘5’ authenticationRef: name: trigger-auth-rabbitmq-host

Slide 13

Slide 13 text

KEDA Features

Slide 14

Slide 14 text

Run Containers at scale ❖KEDA supported scale triggers including Azure Event Hub, Apache Kafka, RabbitMQ, MongoDB, MySQL, PostgreSQL etc. ❖Robust autoscaling without managing complex infrastructure ❖Scale to zero and pay only for use by the second https://keda.sh/docs/2.11/scalers/

Slide 15

Slide 15 text

Summary • Modern applications are loosely coupled and highly portable • AKS provides native integrations to Dapr and KEDA • KEDA helps to auto scale on metrics external to Kubernetes • Dapr tries to simplify the Microservices development and deployment • Dapr Components help to extract underlying functionality and provides abstractions • Make app portable to run in serverless as well as managed cloud services

Slide 16

Slide 16 text

References https://www.youtube.com/@nilesh-gule https://dapr.io/ Dapr Publish and Subscribe Kubernetes Event Driven Autoscaling Serverless - Dapr and Azure Container Apps Comparison between ACA and AKS

Slide 17

Slide 17 text

Containerize Apps Resources Cloud Native Ninja : https://github.com/NileshGule/cloud-native-ninja Azure Container Apps : https://github.com/NileshGule/techtalks-azure-container-apps-demo Slides Slideshare: https://www.slideshare.net/nileshgule/ Speaker Deck: https://speakerdeck.com/nileshgule/

Slide 18

Slide 18 text

Nilesh Gule ARCHITECT | MICROSOFT MVP “Code with Passion and Strive for Excellence” nileshgule @nileshgule Nilesh Gule NileshGule www.handsonarchitect.com https://www.youtube.com/@nilesh-gule

Slide 19

Slide 19 text

#GlobalAzure Q&A