GH GambleHub

Errore Budget e controllo SLO

1) Perché SLO e bilancio degli errori

SLO è un target di qualità percepito dall'utente. SLI - metrica misurabile; Errore Budget - Autorizzazione alle deviazioni per finestra (solitamente 30/90 giorni).
Il bilancio degli errori trasforma l'affidabilità da «astrazione» in una risorsa gestita: quando il budget brucia rapidamente, congeliamo le feci e i chinim; Quando il budget è sano, si possono accelerare i comunicati.

2) Scelta SLI cosa considerare «buono»

Criterio «riuscito dal punto di vista dell'utente».

2. 1 Classici SLI

Availability: percentuale di richieste di successo (escluse quelle annullate dal cliente).
'success = http _ status' {2xx, 3xx, 404} e senza timeout '(404 può essere considerato un successo per l'API read se si tratta di una semantica prevista).
Latency: percentuale di query più veloce della soglia (ad esempio p95-300 ms).
`good_latency = duration_ms ≤ 300`.
Freshness/Staleness: «dati non superiori a X minuti» (cache, directory, coefficienti).
Quality: correttezza del risultato (passaggio di validatori aziendali/backend invarianti).

2. 2 Bordi e segmenti

La SLI deve essere considerata in base a tagli importanti: «route», «tenant/brand», «region/jurisdiction», «payment _ provider». Così non si smuove un guasto ad una maniglia critica su tutto il sistema.

3) Formule e budget

3. 1 Ricorest-based (preferibilmente API)


SLO_availability = good_requests / total_requests
Error_budget = 1 - SLO_target
Burn = 1 - SLO_actual

3. 2 Time-based (per servizi/streaming in sottofondo)


SLO_uptime = good_minutes / total_minutes

3. 3 Esempio di obiettivi

API comuni: 99. 9% di disponibilità in 30 giorni, budget = 0. 1%.
Maniglie critiche: 99. 95%; directory/ricerca: 99. 5%.
Latenza: p95-300 ms su/v1/payments, p99-800 mc.

4) Strumenti SLI

4. 1 Principi

Loghi/trailer RED (Rate/Errors/Duration) con buckets evidenti.
Assicurati di fare «tenant», «region», «route _ class» (senza PII).
Considerate le due metriche: «successo» e «tutto», e per latency «veloce» e «tutto».

4. 2 Esempio Prometheus (rate per 5m)

promql
Availability (successes/total)
sli:success:rate5m = sum by(region, route)(
rate(http_requests_total{code=~"2..    3.."}[5m])
)
sli:total:rate5m = sum by(region, route)(
rate(http_requests_total[5m])
)
sli:availability:ratio5m = sli:success:rate5m / sli:total:rate5m

Latency (fraction faster than 300 ms)
sli:fast:rate5m = sum by(region, route)(
rate(http_request_duration_seconds_bucket{le="0. 3"}[5m])
)
sli:latency_ok:ratio5m = sli:fast:rate5m / sli:total:rate5m

5) Alert per burn rate (multi-window, multi-burn)

5. 1 Idea

Vediamo a che velocità brucia il budget rispetto all'obiettivo. Se la velocità è alta su una finestra corta e lunga, è un segnale.

5. 2 Profili soglia (per SLO 99. 9%)

Cercing burn rate 14. 4 x (10% del budget in un'ora e 5% in 6 ore).
Ticket: burn rate 6 x (2% in 6 ore e 1% in 24 ore).

5. 3 Esempio di regole (Prometheus, pseudo)

promql
Let's calculate the error_ratio on two windows short = 1 - (sum (rate (http_requests_total{code=~"2..    3.."}[5m])) /
sum(rate(http_requests_total[5m])))
long = 1 - (sum(rate(http_requests_total{code=~"2..    3.."}[1h])) /
sum(rate(http_requests_total[1h])))

For SLO = 99. 9%, error_budget=0. 001. BurnRate = error_ratio / 0. 001 burn_short = short / 0. 001 burn_long = long / 0. 001

Paging: Both windows exceed 14. 4× alert: SLOErrorBudgetBurnRateHigh expr: burn_short > 14. 4 and burn_long > 14. 4 for: 5m labels: { severity="page" }
annotations:
summary: "SLO burn rate high (short & long windows)"
runbook: "slo/runbooks/payments. md"

Simile a 6h/24h per il ticket.

6) Gestione del bilancio: processi

6. 1 Gate di lancio

Se il saldo del budget <25% e il trend negativo è «codice-congelamento» per i fili, la priorità è SRE/sostenibilità.
Le release canarie devono avere un taglio SLO separato ('deployment. environment="canary"`).

6. 2 Priorità beclog

Distribuire la capacità del comando in proporzione alla velocità di combustione e all'impatto sul fatturato.
Giustifica il debito tecnico con le metriche: «Il fix X ridurrà il burn rate di Y%».

6. 3 Post-incidente

Ogni incidente è un RCA e un'fix che non può essere rimosso ".

7) SLO come codice

7. 1 Esempio di manifesto SLO (YAML)

yaml service: payments-api owner: team-payments slis:
- name: availability type: request_based success_query: sum(rate(http_requests_total{svc="pay",code=~"2..    3.."}[5m]))
total_query:  sum(rate(http_requests_total{svc="pay"}[5m]))
objective: 99. 95 window: 30d segments: ["region", "tenant", "route"]
- name: latency_p95_300ms type: latency_threshold good_query: sum(rate(http_request_duration_seconds_bucket{svc="pay",le="0. 3"}[5m]))
total_query: sum(rate(http_request_duration_seconds_count{svc="pay"}[5m]))
objective: 99. 0 window: 30d alerts:
- name: burn_high_page windows: ["5m", "1h"]
threshold_burn: 14. 4 severity: page

7. 2 Generazione di regole

Utilizzare i generatori (slo-generator, pyrra, sloth) per creare automaticamente regole, dashboard e report.

8) Degrado e protezione SLO

Load shedder: dare risposte rapide senza dipendenze «costose» al picco.
Cache & stale: `stale-while-revalidate` для read.
Rate/Concertency limits - protegge i backend; i percorsi importanti sono la priorità.
Circuito/Timeout - Timeout veloci e rami «fallback».
Feature flags - Disattiva i filetti pesanti con un solo pulsante.

9) Osservabilità per SLO

Dashboard: SLO actual vs target, bilancio residuo, burn rate, contributi percorsi/provider.
Correlazione: dal "buco" dello SLO "all' ar, un particolare trace di logi/profili.
Report: trend settimanale, consumo di budget, cause top degrado.

10) Antipattern

Uno SLO globale per tutto il mondo maschera i problemi. Segmentate.
«99. 99% su tutto" senza contare costi e realtà. Selezionare gli obiettivi dall'esperienza utente.
Alert per CPU/heap invece di burn rate/SLO.
Ignorare i reading 4xx/lunghi che rovinano UX.
Finestra opaca (rollvs calendario) - Confronta mele con arance.

11) Specificità iGaming/finanza

I percorsi di denaro (depositi/conclusioni) sono singoli SLO al di sopra del livello generale (ad esempio, 99. 95% di disponibilità p95 ≤ 250 ms).
Provider PSP/KYC: SLO per ogni provider + alert per il loro contributo al burn; commutazione automatica delle rotte (smart routing).
Giurisdizioni/tenenti: SLO e budget per «region/giurisdiction/brand», in modo che il problema locale non «riempia» la metrica globale.
Gioco responsabile: SLO durante l'applicazione dei limiti/auto-esclusione (formula compliance).
Controllo/regolazione: conserva i rapporti SLO e gli incidenti; trasparenza per le revisioni interne.

12) Assegno-foglio prod-pronto

  • Definiti SLIs (availability/latency/quality/freshness) e segmenti (route/tenant/region).
  • Gli obiettivi (SLO) sono realistici, coerenti con il business; Ci sono le finestre rolling 30/90 giorni.
  • Alert per burn rate con multi-finestre (paging/ticket).
  • SLO come codice (generatore di regole/dashboard); I resoconti del bilancio.
  • Gate di lancio allineati al resto del budget; i tagli canarini.
  • I meccanismi di degrado (shedder, cache stale, circuito, limiti) sono stati implementati e testati.
  • La correlazione tra metriche di trailer (exemplars), runbooks chiari.
  • Percorsi finanziari/giurisdizionali - SLO/alert separati; PSP/KYC disattivati.
  • Regolare retromarcia per incidenti e investimenti in affidabilità basati sul burn.

13) TL; DR

Definire la SLI in base al valore utente, impostare un SLO realistico, e controllare attraverso l'Errante Budget e il burn rate con le finestre multi. Attivare codice SLO-come, gate di lancio e degrado previsto. Segmentare per percorsi/tenenti/regioni; per le vie del denaro, mantenere obiettivi più rigidi e alert separati.

Contact

Mettiti in contatto

Scrivici per qualsiasi domanda o richiesta di supporto.Siamo sempre pronti ad aiutarti!

Telegram
@Gamble_GC
Avvia integrazione

L’Email è obbligatoria. Telegram o WhatsApp — opzionali.

Il tuo nome opzionale
Email opzionale
Oggetto opzionale
Messaggio opzionale
Telegram opzionale
@
Se indichi Telegram — ti risponderemo anche lì, oltre che via Email.
WhatsApp opzionale
Formato: +prefisso internazionale e numero (ad es. +39XXXXXXXXX).

Cliccando sul pulsante, acconsenti al trattamento dei dati.