GH GambleHub

Passarela API e Rotação

1) Papel da entrada de API na arquitetura

A entrada API é um único ponto de entrada para os microsserviços. Ele:
  • Roda as pesquisas (no caminho/headers/geo/peso/versão).
  • Protege o perímetro (TLS/mTLS, WAF, DDoS, rate limits, authN/Z).
  • Controla o tráfego (canary/AB, shadow/mirror, circuito breaker, retais, temporizadores).
  • Normaliza protocolos (REST/gRPC/WebSocket), cabeçalhos, códigos.
  • Observando (logs, métricas, traçados, coreação).
  • Transforma e valida (JSON/URL, normalização, schema-validação).

Para iGaming, são também geo-complens (bloqueios por país/idade), smart routing de pagamento e políticas de jogo responsável na margem.

2) Opções de roteiro

Path-based: `/api/v1/payments/ → payments-svc`.
Host-based: `eu. api. example. com → eu-edge`, `psp. example. com → psp-proxy`.
Header-based: 'X-Estiveram: Parceiro-A' → Backend Associado; 'Accept: Aplicação/Grpc'.
Geo-roting: por IP/ASN/país (GDPR/proibições locais, latency).
Weighted/Canary: '90%' para a antiga, '10%' para a nova versão; Um rápido retrocesso.
Claim-routing: по `JWT. claims. tier/role/region '(por exemplo, high-roller → limites premium).
Failover: ativo-ativo/ativo-passivo entre o centro de dados/nuvens e o PSP.

3) Segurança do perímetro

TLS everywhere: TLS 1. 2 + no exterior, mTLS no interior (shlyuz↔servisy).
OAUTh2/JWT: Verificação de assinatura, auditoria 'exp/nbf/aud/scope', JWKS rotation; kesh validação com TTL.
HMAC: assinatura de corpos para webhooks/pagamentos.
Chave API: para clientes do sistema; Associamo-nos a quotas/papéis.
WAF: Regras básicas (inhation, protocol anatalies), tamanho corporal, lista deny de países.
Proteção DDoS: connation limiting, SYN cookies, rate-limit para IP/chave/endpoint.
Zero-Trust: Políticas de mandatos (SPIFFE/SPIRE, identidade de serviços), o princípio dos direitos mais baixos.
Privacidade: edição de PII em logs, camuflagem PAN/IBAN, política de armazenamento.

4) Limites, quotas e proteção contra burstas

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

Opcional:
  • Burst + sustained (por exemplo, '50 rps burst', '10 rps sustain').
  • Retry-Boodget e Slow-Loris proteção (temporizadores de leitura).
  • Cotas por dia/mês para os parceiros.

5) Transformação e validação

Normalize títulos (trace-id, local, cliente-id).
Request/Response-maping (campos/códigos, ocultação de atributos internos).
Schema validação (OpenAPI/JSON Schema) antes do proxy - falha inicial 4xx.
Compressão/' Accept-Encoding ', caching (veja abaixo).

6) Cajagem e desempenho

Edge-kesh para guias, metadados públicos, configs (TTL, 'ETag '/' If-None-Match').
Micro-kesh 1-5 s para GET quente (reduz a carga de pico).
Negative-cache é breve (em 404/empty) - cuidado.
Hedging-requests e pesquisas competitivas para réplicas a p95> limiar.

7) Temporizadores, retais, sustentabilidade

Temporizações: connect/read/write separadamente; orientações p95 razoáveis.
Retrai: métodos idempotent (GET/PUT) c backoff + jitter; retry-budget.
Idempotidade POST: 'Idempotency-Key' + dedução do lado do serviço/gateway.
Circuito-Breaker: por erros/latency; half-open amostras.
Bolkhead/pool-isolamento por upstream.

8) Versionização e compatibilidade

Métodos:
  • URI: '/v1/... '(simples, mas «barulhento»).
  • Header/Content-Negotiation: `Accept: application/vnd. app. v2+json`.
  • Função-bandeiras/capability de servidor - para compatibilidade de alterações menores.

Política: SemVer, janela de suporte (por exemplo, «v1» = 12-18 mes), gráfico de despricagem, respostas compatíveis em extensões (adição de campos - não quebra).

9) Observabilidade e controle de qualidade

Correlação: 'traceparent '/' x-request-id' é obrigatório; Vamos lá para baixo.
OpenTelemetry: métricas RPS/p50/p95/p99/5xx/4xx, saturação, retry/circuito de eventos.
Logi: JSON estrutural; mascaramos o PII; níveis de código.
Sampling trailing: base 5-10% + alvo para erros/lentidão.
SLO/alertas: sobre rotas/clientes (farmácia, latency, erro).

10) Gerenciamento de tráfego de lançamentos

Blue-Green: Alterna DNS/LB.
Canary: peso/segmentos (região, parceiro, papel).
Shadow/Mirror: cópia do tráfego para a nova versão sem resposta ao cliente.
Kill-switch: uma bandeira para desativar rapidamente o upstream/fici problemático.

11) Rotação inteligente de pagamentos (iGaming)

As regras de escolha do PSP são geo, moeda, soma, risco, disponibilidade, comissão.
Failover PSP: transição automática para '5xx/timeout'.
Same-method rule: devoluções/conclusões através do método original - verificação na borda.
Idempotidade de pagamento, chave em 'userId+amount+currency+purpose'.
Transparência ETA: O gateway adiciona estatais e causas de rejeição (não os códigos PSP).

12) Políticas de regiões cruzadas e complacência

Filtros geo: listas brancas/negras de países, restrições de idade, Ranji IP.
Dados de residentes: Rotação para clusters regionais (GDPR/leis locais).
Logi e TTL: armazenamento por região, anonimato automático.

13) Exemplos de configuração

13. 1 NGINX (rotação + 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) Folhas de cheque

Antes do lançamento da rota

  • Esquema de autenticação (JWT/JWKS, chaves, TTL do cachê).
  • Os temporizadores/retraí/idempotidade estão configurados.
  • Limites: per-IP, per-key, per-road; quotas de parceiros.
  • Validação do padrão de solicitação/resposta.
  • Logs e traçados com 'trace-id', máscaras PII.
  • SLO/alertas e dashboard.
  • As regras geo/complacência/idade foram verificadas.

Transações e pagamentos

  • Smart routing PSP: regras, prioridades, feedback.
  • O Same-method é verificado na borda.
  • Estatais transparentes e códigos de erro para o cliente (sem código crude PSP).

Lançamentos

  • Canary/AB e kill-switch, plano de reversão.
  • Tráfego shadow para a nova versão, comparando métricas.
  • Teste de carga e p95 alvos.

15) Métricas de qualidade (mínimo)

Availability/SLO sobre rotas; error rate 5xx/4xx.
Latency p50/p95/p99 (exterior e interna).
Retry/timeout/circuito eventos (nível de ruído).
Cachê hit-ratio e economia RPS.
Rate-limit hits e pedidos descartados.
PSP-roting KPIs: avanços, TtW, porcentagem de feedback, comissão.

16) Anti-pattern

Um limite total para tudo.
Retraias instantâneas sem jitter (intensificação da tempestade).
Confiança em 'X-Forwarded-For' sem normalização ou lista de proxies confiáveis.
Temporizações sólidas sem contar p95 (falsos executados).
Transformações rígidas que quebram a compatibilidade.
Logs com PII/PAN/segredos.
Mistura de API interna e externa sob um único domínio/política.

17) Modelos de resposta e erro (microcopy)

429 Too Many Requests: "Atingindo limite de solicitação. Repita em N segundos ou aumente a quota no escritório do parceiro

401/403: "O token não é válido/expirou. Faça logon novamente"

408/504: "O serviço responde por mais tempo que o esperado. O pedido não foi aceito"

Idempotency-conflict: «O pedido com este Idempotency-Key já foi processado (status: sucesso/rejeição)».

18) Processo de implementação (por passo)

1. O modelo de rotas é um mapa de domínios/caminhos/regiões.
2. Políticas de segurança: TLS/mTLS, WAF, authN/Z, chaves/JWKS.
3. Confiabilidade: temporizadores, retraias, idempotency, circuito-breaker.
4. Observabilidade: logs/métricas/trails, corelação.
5. Kesh/perf: edge/micro-cachê, compressão, conector-pula.
6. Roteamento de pagamentos, regras, testes, monitorização.
7. Lançamentos: canary/shadow, kill-switch, plano de reversão.
8. Complaens/geo: filtros de países, armazenamento de dados, idade.

Esparguete final

Perímetro rigoroso (TLS/mTLS, WAF, limites) + tráfego controlado (retrai, circuito, canary).
Validação e transformação na borda → menos defeitos «dentro».
Observabilidade com trace-id e máscaras PII não é uma opção, mas um padrão.
O «smart routing» de pagamentos e o «complaens geo» são críticos para o iGaming.
Versionização e políticas de despricagem são previsíveis para os parceiros.

Contact

Entrar em contacto

Contacte-nos para qualquer questão ou necessidade de apoio.Estamos sempre prontos para ajudar!

Telegram
@Gamble_GC
Iniciar integração

O Email é obrigatório. Telegram ou WhatsApp — opcionais.

O seu nome opcional
Email opcional
Assunto opcional
Mensagem opcional
Telegram opcional
@
Se indicar Telegram — responderemos também por lá.
WhatsApp opcional
Formato: +indicativo e número (ex.: +351XXXXXXXXX).

Ao clicar, concorda com o tratamento dos seus dados.