GH GambleHub

API passerelle et routage

1) Rôle de la passerelle API dans l'architecture

API Gateway est un point d'entrée unique pour les microservices. Il :
  • Route les requêtes (par chemin/headers/geo/poids/version).
  • Protège le périmètre (TLS/mTLS, WAF, DDoS, rate limits, authN/Z).
  • Contrôle le trafic (canary/AB, shadow/mirror, circuit breaker, retraits, timeouts).
  • Normalise les protocoles (REST/gRPC/WebSocket), les en-têtes, les codes.
  • Observe (logs, métriques, traces, corélation).
  • Transforme et valide (JSON/XML, normalisation, schema-validation).

Pour iGaming, c'est aussi la géo-conformité (verrouillage par pays/âge), le smart rowting payant et les politiques de jeu responsable sur le bord.

2) Options de routage

Path-based: `/api/v1/payments/ → payments-svc`.
Host-based: `eu. api. example. com → eu-edge`, `psp. example. com → psp-proxy`.
Header-based : 'X-Client : partner-A' → partner backend ; 'Accept : application/grpc'.
Géo-routing : par IP/ASN/pays (RGPD/interdictions locales, latitude).
Weighted/Canary : « 90 % » sur l'ancienne, « 10 % » sur la nouvelle version ; un retour rapide.
Claim-routing: по `JWT. claims. tier/role/region '(par exemple, haut-roller → limites premium).
Failover : actif-actif/actif-passif entre les centres de données/cloud et PSP.

3) Sécurité du périmètre

TLS everywhere: TLS 1. 2 + sur l'extérieur, mTLS à l'intérieur (shlyuz↔servisy).
OAuth2/JWT : vérification de la signature, audit « bou/nbf/aud/scope », rotation JWKS ; kesh de validation avec TTL.
HMAC : signature des corps pour les webhooks/paiements.
Clés API : pour les clients système ; nous associons les quotas/rôles.
WAF : règles de base (injection, protocol anomalies), taille du corps, deny list des pays.
Protection DDoS : connection limiting, cookies SYN, rate-limit sur IP/clé/endpoint.
Zero-Trust : Politiques de mandat (SPIFFE/SPIRE, identités des services), principe des droits les plus faibles.
Vie privée : modification des PII dans les logs, masquage PAN/IBAN, politique de stockage.

4) Limites, quotas et protection contre les bourgeons

Модели: token bucket, leaky bucket, fixed/sliding window.
Bordures : per-IP, per-key, per-user, per-route.

En option :
  • Burst + sustained (par exemple, '50 rps burst', '10 rps sustain').
  • Retry-Budget et Slow-Loris Protection.
  • Quota par jour/mois pour les partenaires.

5) Transformation et validation

Normalize des titres (trace-id, locale, client-id).
Request/Response-mapping (champs/codes, masquage des attributs internes).
La validation de Schema (OpenAPI/JSON Schema) est une défaillance précoce de 4xx.
Compression/' Accept-Encoding ', caching (voir ci-dessous).

6) Cache et performance

Edge-cache pour les manuels, les métadonnées publiques, les configues (TTL, « ETag »/« If-None-Match »).
Micro-cache 1-5 s par GET chaud (réduit la charge de pointe).
Negative-cache court (sur 404/empty) - prudent.
Hedging-requests et demandes concurrentielles de répliques à p95> seuil.

7) Timouts, Retrai, Résilience

Temporisation : connect/read/write séparément ; des repères p95 raisonnables.
Retrai : méthodes idempotent (GET/PUT) avec backoff + jitter ; retry-budget.
Idempotence POST : 'Idempotency-Key' + déduplication côté service/passerelle.
Circuit-Breaker : par erreur/latitude ; échantillon half-ouvert.
Bulkhead/Pool-isolation par aptrimes.

8) Versioning et compatibilité

Méthodes :
  • URI : '/v1/... '(juste, mais « bruyant » les itinéraires).
  • Header/Content-Negotiation: `Accept: application/vnd. app. v2+json`.
  • Fonction Flags/capability du serveur - pour la compatibilité des modifications mineures.

Stratégie : BouVer, fenêtre de support (par exemple, 'v1' = 12-18 mois), graphique de privations, réponses compatibles lors des extensions (l'ajout de champs ne brise pas).

9) Observation et contrôle de la qualité

Corrélation : 'traceparent '/' x-request-id' est obligatoire ; Nous allons vers le bas.
OpenTelemetry : métriques d'événements de RPS/p50/p95/p99/5xx/4xx, de saturation, de retri/circuit.
Logs : JSON structurel ; nous masquons le PII ; niveaux par code.
Samplage des tracés : base 5-10 % + cible pour les erreurs/lent.
SLO/alertes : par itinéraire/clients (aptyme, latency, erreur).

10) Gestion du trafic de sortie

Bleu-Vert : commutation DNS/LB.
Canary : part de poids/segments (région, partenaire, rôle).
Shadow/Mirror : copie du trafic vers la nouvelle version sans réponse au client.
Kill-switch : drapeau pour désactiver rapidement le problème d'apstream/fichi.

11) Routage de paiement intelligent (iGaming)

Règles de sélection de PSP : géo, devise, montant, risque, disponibilité, commission.
Failover PSP : passage automatique à '5xx/timeout'.
Same-method rule : retours/conclusions via la méthode originale - vérification au bord.
Idempotence de paiement : clé sur 'userId + amount + currency + purpose'.
Transparence ETA : la passerelle ajoute les statuts et les causes des pannes (pas les codes PSP).

12) Politiques croisées et conformité

Filtres géo : Listes des pays blancs/noirs, limites d'âge, IP-Rainji.
Données des résidents : acheminement vers des clusters régionaux (RGPD/lois locales).
Logs et TTL : stockage par région, anonymisation automatique.

13) Exemples de configurations

13. 1 NGINX (routage + limite + headers)

nginx http {
map $http_x_request_id $req_id { default $request_id; }
limit_req_zone $binary_remote_addr zone=per_ip:10m rate=20r/s;

server {
listen 443 ssl http2;
server_name api. example. com;

Security add_header Strict-Transport-Security "max-age = 31536000" always;
add_header X-Content-Type-Options nosniff;

Limit on IP location/api/v1/{
limit_req zone=per_ip burst=40 nodelay;
proxy_set_header X-Request-Id $req_id;
proxy_set_header X-Client-Ip $remote_addr;
proxy_read_timeout 5s;
proxy_connect_timeout 1s;
proxy_pass http://payments_v1;
}

Canary traffic by header location/api/v2/{
if ($http_x_canary = "1") { proxy_pass http://payments_v2; }
proxy_pass http://payments_v1;
}
}
}

13. 2 Envoy (JWT, rate limit, retries, outlier)

yaml static_resources:
listeners:
- name: https address: { socket_address: { address: 0. 0. 0. 0, port_value: 443 } }
filter_chains:
- filters:
- name: envoy. filters. network. http_connection_manager typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. network. http_connection_manager. v3. HttpConnectionManager route_config:
name: local_route virtual_hosts:
- name: payments domains: ["api. example. com"]
routes:
- match: { prefix: "/api/v1/payments" }
route:
cluster: payments_v1 timeout: 5s retry_policy:
retry_on: "connect-failure,refused-stream,5xx,retriable-status-codes"
num_retries: 2 per_try_timeout: 2s http_filters:
- name: envoy. filters. http. jwt_authn typed_config:
"@type": type. googleapis. com/envoy. extensions. filters. http. jwt_authn. v3. JwtAuthentication providers:
main:
issuer: "https://auth. example. com/"
remote_jwks: { http_uri: { uri: "https://auth. example. com/.well-known/jwks. json" } }
forward: true rules:
- match: { prefix: "/api/" }
requires: { provider_name: "main" }
- name: envoy. filters. http. ratelimit
- name: envoy. filters. http. router clusters:
- name: payments_v1 connect_timeout: 0. 5s type: STRICT_DNS lb_policy: ROUND_ROBIN load_assignment: { cluster_name: payments_v1, endpoints: [{ lb_endpoints: [{ endpoint: { address: { socket_address: { address: payments, port_value: 8080 }}}}]}] }
outlier_detection: { consecutive_5xx: 5, interval: 5s, base_ejection_time: 30s }

14) Chèques-feuilles

Avant la sortie de l'itinéraire

  • Schéma d'authentification (JWT/JWKS, clés, cache TTL).
  • Timouts/Retrai/Idempotence personnalisés.
  • Limites : per-IP, per-key, per-route ; quotas de partenaires.
  • Validation du schéma demandes/réponses.
  • Logs et traçages avec 'trace-id', masques PII.
  • SLO/alertes et dashboard.
  • La géo-réglementation/conformité/âge a été vérifiée.

Transactions et paiements

  • Itinéraire intelligent PSP : règles, priorités, faussaire.
  • Same-method est vérifié sur le bord.
  • États transparents et codes d'erreur pour le client (sans code PSP brut).

Versions

  • Canary/AB et kill-switch, plan de retour.
  • Trafic Shadow sur la nouvelle version, comparaison des métriques.
  • Essais de charge et objectifs p95.

15) Métriques de qualité (minimum)

Disponibilité/SLO le long des itinéraires ; error rate 5xx/4xx.
Latitude p50/p95/p99 (externe et interne).
Retry/timeout/circuit événements (niveau de bruit).
Cache hit-ratio et économie RPS.
Rate-limit hits et requêtes abandonnées.
PSP-routing KPIs : succès, TtW, pourcentage de faussaire, commission.

16) Anti-modèles

Une limite totale pour tout.
Retraits « instantanés » sans jitter (augmentation de la tempête).
Confiance dans 'X-Forwarded-For' sans normalisation et liste de proxy de confiance.
Temps forts sans compter p95 (faux positifs).
Transformations difficiles qui brisent la compatibilité.
Logs avec PII/PAN/secrets.
Mélange des API internes et externes sous un seul domaine/politique.

17) Modèles de réponses et erreurs (microcopy)

429 Too Many Requests : "La limite des demandes est atteinte. Répétez dans N secondes ou augmentez le quota dans le bureau du partenaire"

401/403 : "Le token n'est pas valide/a expiré. Reconnectez-vous

408/504 : "Le service répond plus longtemps que prévu. La demande n'a pas été acceptée"

Idempotency-conflict : « Une requête avec une telle Idempotency-Key a déjà été traitée (statut : succès/refus) ».

18) Processus de mise en œuvre (par étapes)

1. Modèle d'itinéraire : carte des domaines/chemins/régions.
2. Stratégies de sécurité : TLS/mTLS, WAF, authN/Z, clés/JWKS.
3. Fiabilité : Timeouts, Retrai, idempotency, circuit-breaker.
4. Observabilité : logs/métriques/tracés, corelation.
5. Cache/perf : edge/micro-cache, compression, connect pools.
6. Itinérance de paiement : règles, tests, surveillance.
7. Sorties : canary/shadow, kill-switch, plan de retour.
8. Conformité/géo : filtres de pays, stockage de données, âge.

La trappe finale

Périmètre strict (TLS/mTLS, WAF, limites) + trafic contrôlé (retraits, circuit, canary).
La validation et les transformations au bord → moins de défauts « à l'intérieur ».
L'observation avec trace-id et les masques PII n'est pas une option, mais une norme.
Le routage intelligent des paiements et la conformité géo sont essentiels pour iGaming.
Versioning et politique de privation - prévisibilité pour les partenaires.

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.