HPA non basta
Kubernetes HPA (Horizontal Pod Autoscaler) scala basandosi su CPU/memoria — metrica troppo grossolana per workload event-driven: lunghezza queue Kafka, profondità RabbitMQ, messages SQS, custom metrics. Serve autoscaler che guardi tuple eventi esterni.
Il rilascio
KEDA (Kubernetes Event-Driven Autoscaling) è annunciato da Microsoft e Red Hat nel maggio 2019 a KubeCon Barcelona. Versione 1.0 rilasciata il 19 novembre 2019. Licenza Apache 2.0. Scritto in Go. Donato alla CNCF nel 2020, graduated nell’agosto 2023.
Come funziona
KEDA estende HPA K8s con ScaledObject (o ScaledJob) CRD:
apiVersion: keda.sh/v1alpha1
kind: ScaledObject
metadata: { name: kafka-consumer }
spec:
scaleTargetRef:
name: my-consumer
minReplicaCount: 0
maxReplicaCount: 50
triggers:
- type: kafka
metadata:
bootstrapServers: kafka:9092
topic: orders
lagThreshold: "100"
KEDA osserva il lag del topic Kafka e scala il Deployment. Include scale-to-zero: se non ci sono messaggi, il Deployment scende a 0 repliche.
Scaler supportati
60+ scaler out-of-box:
- Queues/Streaming — Kafka, RabbitMQ, ActiveMQ, NATS, Redis Streams, Azure Service Bus, AWS SQS/Kinesis, GCP Pub/Sub
- Metrics — Prometheus, Datadog, New Relic, Azure Monitor, CloudWatch
- Database — PostgreSQL, MySQL, MSSQL, MongoDB (row count)
- Triggers — Cron, external webhook, Redis, etcd, Solace
- AI/ML — Seldon, custom predictor via gRPC
Casi d’uso
- Worker consumer Kafka che scala su lag
- Batch processing triggerato da coda
- Serverless-like su K8s (scale-to-zero)
- Scheduled scaling — apri alle 8:00, chiudi alle 20:00
- Spot workload — burst su low-priority
- ML inference — scaling basato su richieste
Integrazione
- Knative complementare per HTTP serverless
- Argo Events — eventi in cluster
- Istio + KEDA — scala basandosi su request-per-second
- Prometheus Operator — custom metrics
Nel contesto italiano
KEDA è usato in:
- E-commerce italiani con burst traffico (Black Friday, Natale)
- Fintech — processing asincrono ordini
- Telco — event-driven pipeline B/OSS
- Industrial IoT — processing sensori
- AI/ML — autoscaling model inference
- PA digitale — pipeline batch PNRR/PSN
Permette di contenere costi cloud facendo scale-to-zero su workload idle, e gestire picchi imprevedibili senza provisioning statico.
Riferimenti: KEDA 1.0 (19 novembre 2019). Microsoft + Red Hat. Licenza Apache 2.0. Scritto in Go. CNCF graduated (agosto 2023). ScaledObject/ScaledJob CRD. 60+ scaler. Scale-to-zero.
