Scailing automatico e bilanciamento SLA
Scailing automatico e bilanciamento SLA
1) Obiettivi e principi
L'obiettivo dello skateboard automatico è di mantenere lo SLO (latitanza/disponibilità) al minimo costo.
SLA↔SLO↔SLA Cost: Non inseguire la scala infinita - scaglioni all'interno del budget degli errori e dei limiti di denaro.
Modello di carico aperto: le query in arrivo generano un flusso di intensità di tipo «©»; il sistema deve fornire un parallelismo medio «N ≈ x W», dove «W» è il tempo medio di manutenzione.
2) Quali metriche sono adatte ai trigger
Tecnica:- CPU/RAM/IO (proxy per la saturazione).
- Competitività (in-flight) e pool wait.
- p95/p99 applicazione latency (vero riflesso dello SLO).
- RPS/arrival rate (velocità di richiesta).
- Code: profondità, età dei messaggi, velocità di elaborazione.
- Percentuale di transazioni completate ≤ T secondi (depositi, assegno-out).
- Tempo di convalida delle operazioni.
La raccomandazione è di combinare 2-3 segnali, ad esempio latency + pools per i servizi e queue depth + age per i worker.
3) Scale predittivo reattivo vs
Reattivo (feedback): HPA/ASG aumenta/riduce le repliche di fatto. È semplice, ma c'è una lega.
Predittivo (feed-forward) - Calendario/precedente telemetria/market-ivent. Abilita il pre-warm a portare il N delle istanze al picco.
In pratica, ibrido baseline (minimo), bust predittivo prima degli eventi, reattivo.
4) Criteri di scale e parametri di stabilità
Target tracking - Mantenere la metrica vicino al target (ad esempio CPU 60%).
Step scaling: gradini in caso di superamento (aggressivo sulle spiagge).
Stabilization window/cooldown - Piegare il flapping (ad esempio, 60-180 secondi).
Min/Max: limite inferiore e superiore max - entro i limiti di database/provider.
5) Coordinamento dei livelli (cascata architettonica)
1. Perimetro/API gateway - elastico, ma con limiti e backpressure.
2. Servizi - HPA latency/RPS/pool wait.
3. Code/worker - KEDA/ASG per profondità/età dei messaggi.
4. Database/cash - Scalare con cautela (repliche/charding), in anticipo.
Regola: non ingrandire l'applicazione più velocemente dei dati.
6) Code e legge Little (come contare i worker)
Per la coda di input «world» (msg/s) e il tempo medio di elaborazione« W »(s):- Il parallelismo desiderato è «N _ min ≈ x W».
- Con scorta di picchi/code: 'N ≈ x W x (1. 2–1. 5)`.