Autoscaling și SLA Balance
Autoscaling și SLA Balance
1) Obiective și principii
Scopul autoscalingului este de a menține SLO (latență/disponibilitate) la un cost minim.
SLA↔SLO↔SLA Cost: nu urmăriți scara „nesfârșită” - scară în cadrul bugetului de erori și limite monetare.
Model de încărcare deschisă: cererile primite formează un flux de intensitate „λ”; sistemul furnizează paralelismul mediu „N ≈ λ × W” (legea lui Little), în cazul în care „W” este timpul mediu de serviciu.
2) Ce valori sunt potrivite pentru declanșatoare
Tehnic:- Procesor/RAM/IO (proxy pentru saturație).
- În zbor și piscină așteptați.
- p95/p99 latența aplicației (reflectă de fapt SLO).
- RPS/rata de sosire.
- Cozi: adâncime, vârsta mesajelor, viteza de procesare.
- Cota tranzacțiilor de succes ≤ secunde T (depozite, check-out).
- E timpul să confirmăm tranzacţiile.
Recomandare: combinați 2-3 semnale: de exemplu, latență + piscine pentru servicii și adâncimea cozii + vârsta pentru lucrători.
3) Scară reactivă vs predictivă
Feedback: HPA/ASG crește/reduce indicii de fapt. Simplu, dar există un decalaj.
Predictive (feed-forward): calendar/trecut telemetrie/evenimente de piață. Permite pre-cald: ridica N instanțe Δ t înainte de vârf.
În practică: hibrid - referință (minim), impuls predictiv înainte de evenimente, aduce reactive.
4) Politicile de scară și parametrii de stabilitate
Urmărirea țintei: păstrați metrica lângă țintă (de ex. CPU 60%).
Etapa de scalare: pași în exces (agresiv pe aderențe).
Fereastra de stabilizare/cooldown: flapping neted (ex. 60-180 sec).
Min/Max: limite inferioare și superioare; max - în limitele DB/furnizor.
5) Coordonarea nivelului (cascadă arhitecturală)
1. Perimetru/gateway API - elastic, dar cu limite și backpressure.
2. Servicii - HPA by latency/RPS/pool wait.
3. Cozi/lucrători - KEDA/ASG după adâncimea mesajului/vârsta.
4. DB/cache - scalare atentă (replici/cioburi), în avans.
Regula: Nu creșteți aplicația mai repede decât „datele” vor rezista.
6) Cozi și legea lui Little (cum să numeri muncitorii)
Pentru coada cu „λ” de intrare (msg/s) și timpul mediu de procesare „W”:- Concurența necesară este 'N _ min ≈ λ × W'.
- Marja de vârf/coadă: "N W (1. 2–1. 5)`.