GH GambleHub

API d'analyse et de mesure des performances

1) Pourquoi est-ce nécessaire

L'API est le « système circulatoire » de la plate-forme. Sans métriques strictes, nous ne pouvons pas :
  • prouver l'exécution du SLO et du SLA,
  • gérer la bande passante et l'économie des demandes,
  • localiser rapidement les dégradations (p99-queues, surtensions 5xx),
  • hiérarchiser les optimisations par impact sur l'entreprise.

Objectif : un modèle d'observation unique où chaque demande est suivie du périmètre à l'OBD avec des identifiants communs et des IDS cohérents.

2) Taxonomie des métriques

Technique : RPS, latence (p50/p95/p99), taux d'erreur (4xx/5xx), saturation (CPU, mémoire, file-desc), queue time.
Produits : opérations réussies/min, conversion d'étape (200/total), part de rate-limited (429), retraits, segments personnalisés.
Coût : cost/request (CPU-ms + egress + OBD request), coût fichi/endpoint, $/tenant, $/1k appels.

3) « Signaux d'or » : RED et USE

RED (pour API) :
  • Rate - requêtes/s (par endpoint/tenant/plan).
  • Errors - 4xx/5xx/429 parts et absolus.
  • Durée - p50/p95/p99 end-to-end et par étapes (ingress → app → DB → tiers).
USE (pour les ressources) :
  • Utilisation - Chargement CPU/IO/canal.
  • Saturation - files d'attente (run-queue, backlog, DB wait).
  • Errors - Erreurs de pilote/temporisation.

4) Définitions et formules de base

Availability SLI: `1 − (5xx + gateway_timeout) / all_requests`.
Success SLI : '2xx/( all − 429_shadow)' (à l'exclusion des verrous « shadow »).
Apdex: `(|T≤T| + 0. 5·|T≤4T| )/all ', où « T » est le seuil « bon » cible.
Tail amplification : 'p99 _ total − max (p99_stage_i)' est la contribution des files d'attente/composition.
Error budget (mois) à 99. 9 %: 'budget = 0. 1 % temps _ période '.

Bines percentiles recommandées pour les histogrammes latins : '[5ms, 10ms, 25ms, 50ms, 100ms, 250ms, 500ms, 1s, 2. 5s, 5s]`.

5) SLI/SLO et alerting par burn-rate

Exemple de SLO (API publique) :
  • Disponibilité : ≥ 99. 9 %/30 jours.
  • p95 de latence 'GET/wallet/balance' <150 ms ; 'POST/payments' <400 ms.
  • Erreurs '5xx' <0. 2 %. '429' (solide) <1 % du trafic total.
Burn-rate alerts (à deux fenêtres) :
  • 2 % de budget en 1 heure ou 5 % en 6 heures → page à l'ingénieur.
  • 10 % par jour → priorité RCA.

6) Ensemble de métriques (ce qui est obligatoire)

Sur le périmètre (passerelle/WAF) :
  • `http_requests_total{route,method,status,tenant,plan}`
  • 'http _ request _ duration _ seconds _ bucket {route,...}' (histogramme)
  • `retries_total{reason}`, `rate_limited_total{key,policy}`
  • Dimensions du corps : 'request _ bytes', 'response _ bytes'
Dans l'annexe :
  • `db_client_requests_total{op,table}`, `db_latency_seconds_bucket{op}`
  • 'cache _ ops _ total {op}', hit-rate cache appels externes : 'outbound _ calls _ total {provider, op}', latency/error/timauts queue/pools : longueurs/retards, workers actifs ressources USE : CPU, RSS, FD, GC-pauses

Labels d'entreprise : 'tenant _ id', 'region', 'kyc _ level', 'plan', 'feature _ flag'.

7) Trace et corrélation (OpenTelemetry)

W3C Trace-Context (« traceparent », « tracestate ») sur tous les hops.
Span par étapes : ingress → authZ → app handler → DB/Redis → PSP/externe.
Attributes/labels : 'http. route`, `enduser. id`, `tenant. id`, `idempotency. key`, `risk. score`.
Exemples : associez les points des graphiques latency/error à des points spécifiques trace-id.

Sampling:
  • head-based 1-10 % pour les voies « classiques »,
  • tail-based pour les résidus (nous prenons lent/erroné),
  • adaptive pour les pics et les incidents.
  • Baggage : transfère 'tenant '/' risk' pour les coupes sans marquer chaque événement.

8) Logs : Structure et vie privée

JSON structuré ; champs obligatoires : 't',' trace _ id ',' span _ id ',' route ',' status ',' latency _ ms', 'tenant', 'user _ id _ hash'.
Politique PII : masquer le PAN/PII ; interdire les secrets/tokens.
Sampling logs : haut pour 4xx/5xx/429 et requêtes « longues ».

9) Carte de dashboard (recrutement minimum)

1. Exec-Résumé : RPS, Disponibilité, Taux d'erreur, p95/p99 latitude, 429 parts, Budget de burn-rate.
2. Per-Route : top endoints sur RPS/erreurs/queues ; comparaison des versions (canaries).
3. Per-Tenant/Plan : leaders en charge/coût/erreurs.
4. Dependency Health : DB, cache, PSP/externe - latency, erreurs, saturation.
5. Capacity : CPU/RAM/FD, files d'attente, pool de connexion, GC, limites de conteneurs.
6. Sécurité/Abuse : 401/403, 429/politiques, tranches géo/ASN, éclats de rétrograves.

10) Alerts (seuil et tendance)

'error _ rate {route} '> 2 % (5 minutes) et RPS> N → pager.
'P99 _ latency {critical}> seuil cible (10 minutes).
« burn _ rate » par budget (voir § 5).
DB 'timeouts '/' deadlocks' ou la taille 'queue _ time'> Xms.
Fournisseurs externes : 'outbound _ 5xx _ rate {provider}'> 1 % + SLO dépendants.

11) Planification et performance capacitives

Loi de Little : « L = λ· W » (longueur moyenne de la file d'attente = trafic × temps moyen).
La cible p95 est mise en place : 'ingress + app + DB + external + queue'.
Budget de concurrence : nous enregistrons un maximum d'opérations write simultanées.
Métrique du budget : « ms CPU à demander » ; nous avons une marge de 30 à 50 % au sommet.
Interaction avec rate-limit : mesurez la proportion de demandes au « plafond » du quota et l'impact sur la latence.

12) Contrôles de charge et de synthèse

Espèces : charge de base, bourgeons × 10, « étages », plateaux à long terme, stress/chaos (tuer des nodules, retards du réseau), synthétique selon des scénarios critiques pour les clients.
Profilage : CPU/alloc/lock-content, N + 1 (SQL/HTTP), codes lents.
Contrôle des régressions : comparaison p95/p99/erreurs avant/après libération (canaries).

13) Coût (Cost-Observability)

Métriques de coût : 'cpu _ ms',' egress _ bytes ',' db _ calls ',' $ per 1k requests '.
Allocation sur endpoint/tenant/fich : balises de facturation de l'orchestrateur + métriques de charge → rapport sur l'économie unitaire de l'API.
Algorithme d'optimisation : nous sélectionnons les endpoints TOP par le produit « traffic × cost × (p95 − cible) ».

14) Per-tenant de l'analyse et de la « justice »

Toutes les mesures clés sont avec le label 'tenant _ id/plan'.
Proportion de clients « lourds » dans les résidus p99 ; des limites/quotas distincts et des budgets rétrogrades.
Fairing équitable : en cas de surcharge, nous réduisons la proportion de locataires « importants ».

15) Spécificités iGaming/Finance

Coupes par 'kyc _ level', 'risk _ tier', 'payment _ method'.
SLI pour les chemins « monétaires » (« POST/dépôts », « POST/withdrawals ») : ci-dessous les cibles p95, budgets d'erreurs séparés.
Métriques Time-to-Wallet (TTW), proportion de blocage automatique par antifrood, conversion de paiement.
Audit : logs immuables pour les actions financières et les solutions antifrod.

16) Instrumentation : pratiques de mise en œuvre

Nommage des métriques (exemple) :
  • `api_http_requests_total` (counter)
  • `api_http_request_duration_seconds` (histogram)
  • `api_outbound_requests_total`, `api_db_query_duration_seconds`
  • `api_rate_limited_total`, `api_retry_total{reason}`

Лейблы: `route`, `method`, `status_class`, `tenant`, `region`, `version`, `canary`, `provider`, `db_table`.
Cardinalité : éviter les valeurs libres (user_id), utiliser des « baquets »/hash.
Exemples : connectez-vous aux histogrammes p95/p99 → un clic sur trace.

17) Anti-modèles

Moyenne au lieu des percentiles ; pas de division en classes statu quo.
« route »/« path » (ID dynamique « cousus » dans les labels).
Labels à haute cardinalité (raw user_id, IP).
Absence de comptabilité séparée des fournisseurs externes (PSP/3rd-party).
Alert par « bruit » (une seule fois et un seul seuil).
p99 sans tenir compte du temps de queue (masque de la dégradation réelle).

18) Liste de contrôle prod-ready

  • Défini par SLI/SLO et error-budget, harmonisé avec l'entreprise.
  • Histogrammes uniques de latitude et de status-classes ; p95/p99 sur les dashboards.
  • Trace complète (OTel), corrélation logs/métriques/tracés.
  • Alert burn-rate, seuils p99 et error-rate.
  • Per-tenant/per-plan coupes et rapports sur le coût.
  • Dashboards : Exec, Per-Route, Dependencies, Capacity, Abuse.
  • Scénarios de charge (burst/plateau/stress), profilage.
  • Politiques rétrogrades avec jitter ; prise en compte de l'influence des retraits sur le RPS.
  • Documentation SLA/SLO pour les partenaires et les clients publics.
  • Rétention/masquage des logs, protection PII.

19) TL; DR

Construisez l'observabilité autour de SLI/SLO et error-budget, mesurez RED/USE, collectez des histogrammes de latitude avec p95/p99 et « queue time », distribuez un seul trace-id du périmètre à l'OBD, utilisez tail/adaptive-sampling, tenez le per-tenant/valeur coupes et burn-rate-alerting à deux fenêtres. Planifier la capacité selon les lois des files d'attente et l'impact sur les métriques d'entreprise ; les anti-pectures sont des moyennes au lieu des percentiles, une cardinalité élevée et des dépendances extérieures non comptabilisées.

Contact

Prendre contact

Contactez-nous pour toute question ou demande d’assistance.Nous sommes toujours prêts à vous aider !

Telegram
@Gamble_GC
Commencer l’intégration

L’Email est obligatoire. Telegram ou WhatsApp — optionnels.

Votre nom optionnel
Email optionnel
Objet optionnel
Message optionnel
Telegram optionnel
@
Si vous indiquez Telegram — nous vous répondrons aussi là-bas.
WhatsApp optionnel
Format : +code pays et numéro (ex. +33XXXXXXXXX).

En cliquant sur ce bouton, vous acceptez le traitement de vos données.