GH GambleHub

API 게이트웨이 및 라우팅

1) 아키텍처에서 API 게이트웨이 역할

API 게이트웨이는 마이크로 서비스로 들어가는 단일 지점입니다. 그는:
  • 경로 요청 (경로/헤더/geo/weight/버전별).
  • 주변을 보호합니다 (SL/mSL, WAF, DDoS, 속도 제한, 함수/Z).
  • 트래픽 제어 (카나리아/AB, 섀도우/미러, 회로 차단기, 레트라, 타임 아웃).
  • 프로토콜 (REST/gRPC/WebSocket), 헤더, 코드를 표준화합니다.
  • 관찰 (로그, 메트릭, 흔적, 상관 관계).
  • 변환 및 검증 (JSON/XML, 정규화, 스키마 검증).

iGaming의 경우 지리 준수 (국가/연령 차단), 스마트 결제 라우팅 및 책임있는 게임 정책이기도합니다.

2) 라우팅 옵션

경로 기반: '/api/v1/payment/→ payment-svc '.
호스트 기반: 'eu. 아피. 예. com → eu-edge ',' psp. 예. com → psp 프록시 '.
헤더 기반: 'X-Client: partner-A' → 파트너 백엔드; '수락: 응용 프로그램/grpc'.
지리 라우팅: IP/ASN/country (GDPR/로컬 금지, 대기 시간).
가중/카나리아: 이전 버전의 '90%', 새 버전의 '10%'; 빠른 롤백.
클레임 라우팅: 'JWT. 주장. 계층/역할/지역 '(예: 높은 롤러 → 프리미엄 한계).
실패: 데이터 센터/클라우드와 PSP 간의 자산 자산/자산 책임.

3) 주변 보안

어디에서나 TLS: TLS 1. 외부에 2 +, 내부에 mTLS (shlyuz ² servisy).
OAuth2/JWT: 서명 검증, 감사 'exp/nbf/aud/scope', JWKS 회전; TTL의 유효성 캐시.
HMAC: 웹 후크/결제를위한 바디 서명.
API 키: 시스템 클라이언트 용; 할당량/역할과 관련이 있습니다.
WAF: 기본 규칙 (주입, 프로토콜 이상), 신체 크기, 국가 목록 거부.
DDoS 보호: 연결 제한, SYN 쿠키, IP/키/엔드 포인트의 속도 제한.
제로 트러스트: 필수 정책 (SPIFFE/SPIRE, 서비스 아이덴티티), 최소 권리의 원칙.
개인 정보 보호: 로그의 PII 편집, PAN/IBAN 마스킹, 스토리지 정책.

4) 버스트에 대한 한계, 할당량 및 보호

계정: 토큰 버킷, 새는 버킷, 고정/슬라이딩 창.
경계: IP 당, 키 당, 사용자 당, 경로당.

선택 사항:
  • 버스트 + 지속 (예: '50 rps burst', '10 rps sustare').
  • 재시도 예산 및 슬로우 로리 보호 (시간 초과 읽기).
  • 파트너의 일/월 쿼터.

5) 변형 및 검증

헤더 정규화 (트레이스 아이드, 로케일, 클라이언트 아이드).
요청/응답 매핑.
프록시 전 스키마 검증 (OpenAPI/JSON 스키마) - 초기 4xx 실패.
압축/' 수락 인코딩 ', 캐싱 (아래 참조).

6) 캐싱 및 성능

디렉토리, 공개 메타 데이터, 구성을위한 에지 캐시 (TTL, 'ETag '/' If-None-Match').
뜨거운 GET의 경우 마이크로 캐시 1-5 초 (피크로드 감소).
네거티브 캐시 짧음 (404/빈) -조심하십시오.
p95> 임계 값에서 복제본에 대한 헤지 요청 및 경쟁 요청.

7) 타임 아웃, 휴식, 탄력성

시간 초과: 별도로 연결/읽기/쓰기; 합리적인 p95 랜드 마크.
Retrai: 백오프 + 지터가있는 dem 등원 방법 (GET/PUT); 재 시도 예산.
POST dempotency: 'Idempotency-Key' + 서비스/게이트웨이 중복.
회로 차단기: 오류/대기 시간별; 반 공개 시험.
업스트림에 의한 벌크 헤드/풀 격리.

8) 수정 및 호환성

방법:
  • URI: '/v1/... '(간단하지만 "시끄러운" 경로).
  • 헤더/컨텐츠 협상: '수락: 응용 프로그램/vnd. 앱. v2 + json '.
  • 사소한 변경 호환성을위한 기능 플래그/서버 기능.

정책: SemVer, 지원 창 (예: 'v1' = 12-18 개월), 박탈 일정, 확장에 대한 호환 가능한 응답 (필드 추가는 중단되지 않음).

9) 관찰 및 품질 관리

상관 관계: '명백한 '/' x- 요청 -id' 필요; 우리는 그것을 버립니다.
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx, 채도, 재 시도/회로 이벤트 메트릭.
로그: 구조적 JSON; 변장 PII; 코드 별 레벨.
추적 샘플링: 오류/느린 기본 5-10% + 대상.
SLO/경고: 경로/클라이언트 별 (가동 시간, 대기 시간, 오류).

10) 트래픽 관리 릴리스

Blue-Green DNA/LB 스위치.
카나리아: 가중치 공유/세그먼트 (지역, 파트너, 역할).
Shadow/Mirror: 클라이언트에 응답하지 않고 새 버전으로의 트래픽 사본.
킬 스위치: 문제가있는 업스트림/기능을 빠르게 비활성화하는 플래그.

11) 스마트 결제 라우팅 (iGaming)

PSP 선택 규칙: 지리, 통화, 금액, 위험률, 가용성, 수수료.
실패 PSP: '5xx/타임 아웃' 에서 자동 전환.
동일한 방법 규칙: 원래 방법을 통해 반환/출력-가장자리를 확인하십시오.
지불 ID: 'useID + 금액 + 통화 + 목적' 의 키.
ETA 투명성: 게이트웨이는 상태 및 장애 원인 (PSP 코드가 아님) 을 추가합니다.

12) 지역 간 정책 및 규정 준수

지오 필터: 국가의 흰색/검정 목록, 연령 제한, IP 범위.
주민 데이터: 지역 클러스터로의 라우팅 (GDPR/현지 법률).
로그 및 TTL: 지역별 저장, 자동 익명화.

13) 설정 예

13. 1 NGINX (라우팅 + 제한 + 헤더)

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 특사 (JWT, 요율 제한, 재 시도, 특이 치)

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) 점검표

경로 출시 전

  • 인증 체계 (JWT/JWKS, 키, TTL 캐시).
  • 타임 아웃/배상/이념이 구성됩니다.
  • 한계: IP 당, 키 당, 경로당; 파트너 할당량.
  • 요청/응답 체계의 검증.
  • 'trace-id', PII 마스크가있는 로그 및 흔적.
  • SLO/경고 및 대시 보드.
  • 지리 규칙/준수/연령 확인.

거래 및 지불

  • PSP 스마트 라우팅: 규칙, 우선 순위, Feilover.
  • 동일한 방법이 가장자리에서 확인됩니다.
  • 고객을위한 투명한 상태 및 오류 코드 (원시 PSP 코드 없음).

릴리스

  • 카나리아/AB 및 킬 스위치, 롤백 계획.
  • 새로운 버전으로의 그림자 트래픽, 지표 비교.
  • 로드 테스트 및 p95 대상.

15) 품질 지표 (최소)

경로 별 가용성/SLO; 오류율 5xx/4xx.
대기 시간 p50/p95/p99 (외부 및 내부).
재시도/시간 초과/회로 이벤트 (노이즈 레벨).
캐시 적중 비율 및 RPS 절약.
속도 제한 적중 및 삭제 요청.
PSP 라우팅 KPI: 성공, TtW, feilover 비율, 커미션.

16) 반 패턴

"모든 것에 대한" 하나의 총 한계.
"즉석" 은 지터없이 후퇴합니다 (폭풍 강화).
정규화 및 신뢰할 수있는 프록시 목록없이 'X-Forwarded-For' 를 신뢰하십시오.
p95를 제외한 어려운 타임 아웃 (오 탐지).
호환성을 깨는 하드 변환.
PII/PAN/비밀이있는 로그.
동일한 도메인/정책에서 내부 및 외부 API를 혼합하십시오.

17) 응답 패턴 및 오류 (현미경)

429 너무 많은 요청: "요청 제한에 도달했습니다. N 초 단위로 반복하거나 파트너 사무실의 할당량을 늘리십시오. "

401/403: "토큰이 유효하지 않거나 만료되었습니다. 다시 로그인하십시오 "

408/504: "서비스가 예상보다 오래 응답합니다. 요청이 수락되지 않았습니다 "

이데올로기 충돌: "이 Idempotency-Key에 대한 요청이 이미 처리되었습니다 (상태: 성공/실패)".

18) 구현 프로세스 (단계)

1. 경로 모델: 도메인/경로/지역 맵.
2. 보안 정책: SL/mSL, WAF, 소/Z, 키/JWKS.
3. 신뢰성: 타임 아웃, 배상, demempotency, 회로 차단기.
4. 관찰 가능성: 로그/메트릭/추적, 상관 관계.
5. 캐시/퍼프: 엣지/마이크로 캐시, 압축, 연결 풀.
6. 지불 라우팅: 규칙, 테스트, 모니터링.
7. 릴리스: 카나리아/섀도우, 킬 스위치, 롤백 계획.
8. 준수/지리: 국가 필터, 데이터 저장, 연령.

최종 치트 시트

엄격한 경계 (SL/mSL, WAF, 한계) + 관리 된 트래픽 (retrai, 회로, 카나리아).
→ 가장자리의 검증 및 변환은 "내부" 결함보다 적습니다.
트레이스 아이드 및 PII 마스크를 사용한 관찰 가능성은 옵션이 아니라 표준입니다.
스마트 결제 라우팅 및 규정 준수 지구는 iGaming에 중요합니다.
검증 및 박탈 정책-파트너의 예측 가능성.

Contact

문의하기

질문이나 지원이 필요하시면 언제든지 연락하십시오.우리는 항상 도울 준비가 되어 있습니다!

Telegram
@Gamble_GC
통합 시작

Email — 필수. Telegram 또는 WhatsApp — 선택 사항.

이름 선택 사항
Email 선택 사항
제목 선택 사항
메시지 선택 사항
Telegram 선택 사항
@
Telegram을 입력하시면 Email과 함께 Telegram에서도 답변드립니다.
WhatsApp 선택 사항
형식: +국가 코드 + 번호 (예: +82XXXXXXXXX).

버튼을 클릭하면 데이터 처리에 동의하는 것으로 간주됩니다.