GH GambleHub

gateway API e routing

1) Ruolo del gateway API nell'architettura

Il gateway API è un unico punto di accesso ai microservizi. Lui:
  • Installa le richieste (percorso/header/geo/peso/versione).
  • Protegge il perimetro (TLS/mTLS, WAF, DDoS, rate limits, authN/Z).
  • Controlla il traffico (canary/AB, shadow/mirror, circuito breaker, retrai, timeout).
  • Standardizza protocolli, intestazioni, codici.
  • Osserva (fogli, metriche, tracciati, corellazioni).
  • Trasforma e valuta (JSON/XML, normalizzazione, schema-validation).

Per i clienti si tratta anche di geo-compilation (blocchi per paese/età), smart routing di pagamento e politiche di gioco responsabile ai margini.

2) Opzioni di instradamento

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' backend di partner; 'Accept: application/grpc'.
Geo-routing: per IP/ASN/Paese (GDPR/divieti locali, latency).
Weighted/Canary: '90%' sulla vecchia, '10%' sulla nuova versione; una rapida rimonta.
Claim-routing: по `JWT. claims. tier/role/region '(ad esempio high-roller-premium-limite).
Failover: attivo/attivo-passivo tra centro dati/nuvole e PSP.

3) Sicurezza perimetro

TLS everywhere: TLS 1. 2 + sull'esterno, mTLS all'interno (shlyuz↔servisy).
OAuth2/JWT: controllo della firma, revisione'exp/nbf/aud/scope ', rotazione JWKS; kesh validation con TTL.
HMAC firma corpi per webhooks/pagamenti.
Chiavi API per i client di sistema Siamo collegati a quote/ruoli.
WAF: regole di base (injection, protocol anatalies), dimensioni del corpo, deny list dei paesi.
Protezione DDoS: connection limiting, cookie SYN, rate-limit su IP/chiave/endpoint.
Zero-Trust: regole di mandato (SPIFFE/SPIRE, identità dei servizi), il principio dei diritti minimi.
Privacy: modifica del PII nei fogli, maschera PAN/BAN, regole di conservazione.

4) Limiti, quote e protezione contro i bursti

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

Opzionale:
  • Burst + sustained (ad esempio, «50 rps burst», «10 rps sustain»).
  • Protezione Retry-Budget e Slow-Loris (timeout di lettura).
  • Quota al giorno/mese per i partner.

5) Trasformazioni e validazione

Normalize intestazioni (trace-id, locale, client-id).
Richiest/Response-mapping (campi/codici, nascosto attributi interni).
Schema validation (OpenAPI/JSON Schema) prima del proxy - Errore precoce 4xx.
Compression/« Accept-Encoding », cache (vedere qui sotto).

6) Cache e prestazioni

Edge-cash per riferimenti, metadati pubblici, configure (TTL, ETAG/If-None-Match).
Micro-cache 1-5 s per GET hot (riduzione del carico di picco).
Negative-cache breve (in 404/empty) - attenzione.
Hedging-richiesti e richieste di replica competitive a p95> soglia.

7) Timeout, retrai, sostenibilità

Timeout: connect/read/write separatamente; Punti di riferimento p95 ragionevoli.
Retrai: metodi idempotent (GET/PUT) c backoff + jitter; retry-budget.
Idampotenza POST: «Idempotency-Key» + deduplicazione sul lato servizio/gateway.
Circuito-Breaker: per errori/latency; prova half-open.
Bullkhead/pool-isolamento per upstream.

8) Versioning e compatibilità

Metodi:
  • URI: '/v1/... '(semplice ma «rumoroso»).
  • Header/Content-Negotiation: `Accept: application/vnd. app. v2+json`.
  • Feature-flag/capability server - per la compatibilità delle modifiche minor.

Criteri: SemVer, finestra di supporto (ad esempio, «v1» = 12-18 mes), grafico di depricaggio, risposte compatibili per le estensioni (aggiungere campi - non rompe).

9) Osservabilità e controllo qualità

La correlazione «traceparent »/« x-sollest-id» è obbligatoria; Andiamo di sotto.
OpenTelemetry: metriche RPS/p50/p95/p99/5xx/4xx, saturation, retry/circuito eventi.
Loghi: JSON strutturali; mascheriamo il PII; livelli per codice.
Trailing di base 5-10% + target per errori/lenti.
SLO/alert: percorsi/clienti (farmacia, latency, errore).

10) Gestione del traffico di rilascio

Blue-Green: cambio DNS/LB.
Canary: peso/segmenti (regione, partner, ruolo).
Shadow/Mirror: copia del traffico per la nuova versione senza risposta al cliente.
Kill-switch - Flag per disattivare rapidamente l'upstream/fici problematico.

11) Routing smart dei pagamenti (iGaming)

Le regole di scelta PSP sono geo, valuta, importo, rischio-score, accessibilità, commissione.
Failover PSP: transizione automatica a «5xx/timeout».
Same-method rule - Restituzioni/conclusioni tramite il metodo originale - Verifica sul bordo.
Idemotività dei pagamenti, chiave su «userId+amount+currency+purpose».
Trasparenza ETA - Il gateway aggiunge gli stati e le cause dei guasti (non i codici PSP).

12) Politiche delle regioni crociate e della compilazione

I filtri geo sono elenchi bianchi/neri dei paesi, limiti di età, range IP.
Dati residenti: instradamento in cluster regionali (GDPR/Locali).
Logi e TTL: archiviazione per regione, anonimizzazione automatica.

13) Esempi di configurazione

13. 1 NGINX (routing + limite + header)

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) Assegno fogli

Prima del lancio del percorso

  • Schema di autenticazione (JWT/JWKS, chiavi, TTL cache).
  • Timeout/retrai/idampotenza configurati.
  • Limiti: per-IP, per-key, per-route; quote di partner.
  • Convalida lo schema di richieste/risposte.
  • Loga e traccia con «trace-id», maschera PII.
  • SLO/alert e dashboard.
  • Geo-regole/compliance/età verificate.

Transazioni e pagamenti

  • Smart routing PSP: regole, priorità, feelover.
  • Same-method viene controllato sul bordo.
  • Stato e codici di errore trasparenti per il client (senza codice PSP grezzo).

Release

  • Canary/AB e kill-switch, piano di ripristino.
  • Traffico shadow per la nuova versione, confronto metriche.
  • Test di carico e p95 obiettivi.

15) Metriche di qualità (minimo)

Availability/SLO lungo le rotte; error rate 5xx/4xx.
Latency p50/p95/p99 (esterno e interno).
Retry/timeout/circuito eventi (livello di rumore).
Cache hit-ratio e risparmio RPS.
Rate-limit hits e richieste rifiutate.
PSP-routing KPIS: successo, TtW, percentuale di feelover, commissione.

16) Anti-pattern

Un limite totale per tutto.
Retrai immediati senza jitter (aumento della tempesta).
Confida in X-Forwarded-For senza la normalizzazione e l'elenco dei proxy affidabili.
Timeout solidi a parte p95 (false attivazioni).
Trasformazioni rigide che rompono la compatibilità.
Loghi PII/PAN/segreti.
Miscelare l'API interna ed esterna con un unico dominio/criterio.

17) Modelli di risposta e errori (microcopy)

429 Too Many Recests: "È stato raggiunto il limite di richiesta. Ripetere tra n secondi o aumentare la quota nell'ufficio del partner

401/403: "Token non valido/scaduto. Riattivare l'accesso

408/504: "Il servizio risponde oltre le attese. La richiesta non è stata accettata"

Idempotency-conflict: «La query con questo Idempotency-Key è già stata elaborata (stato: successo/rifiuto)».

18) Processo di implementazione (per passo)

1. Il modello di percorso è una mappa di domini/percorsi/regioni.
2. Regole di sicurezza: TLS/mTLS, WAF, authN/Z, chiavi/JWKS.
3. Affidabilità: timeout, retrai, idempotency, circuito-breaker.
4. Osservabilità: loghi/metriche/roulotte, corellazione.
5. Kesh/perf: edge/micro-cache, compressione, connect-pool.
6. Routing dei pagamenti, regole, test, monitoraggio.
7. Release: canary/shadow, kill-switch, piano di ripristino.
8. Compilazione/geo: filtri dei paesi, archiviazione dei dati, età.

Scorciatoia finale

Perimetro rigoroso (TLS/mTLS, WAF, limiti) + traffico controllato (retrai, circuito, canary).
La validazione e la trasformazione al limite sono meno difetti all'interno.
Osservabilità con trace-id e maschere PII non è un'opzione, ma uno standard.
Lo smart routing dei pagamenti e il completamento-geo sono critici per i clienti.
Versioning e politiche di deprecazione sono prevedibili per i partner.

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.