GH GambleHub

API 게이트웨이 및 라우팅

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

게이트웨이 API-가장자리의 L7 구성 요소:
  • 인바운드 트래픽 허용 (TH/HTTP2/HTTP3, WebSocket, gRPC)
  • 규칙에 따른 경로 (호스트/경로/헤더/방법/쿼리/지리/무게/건강);
  • 엔드 투 엔드 정책을 적용합니다: 인증/인증, 요율 제한, WAF, CORS, 캐싱;
  • 변환을 수행합니다 (헤더/바디의 정규화, gRPC SL JSON, GraphQL 스티칭).
  • 안정성 (타임 아웃, 재시도, 회로 차단기, 특이 치 감지) 을 제공합니다.
  • 관찰 및 청구 (로그, 메트릭, 추적, 할당량) 를 제공합니다.
  • 내부 토폴로지 (서비스 메쉬, 개인 서비스) 를 분리합니다.

종종 쌍으로 사용됩니다: Edge/API-Gateway + Ingress/Mesh (Envoy/Istio/Linkerd) - 첫 번째는 두 번째 동서 외교 정책을 결정합니다.

2) 전형적인 토폴로지

단일 글로벌 게이트웨이 (CNC/edge Pop → L7 게이트웨이 → 서비스) - 간단한 중앙 집중식 정책.
지역 게이트웨이 (지역당) + 스마트 지리/대기 시간 라우팅.
다중 임차인: 임차인 당 전용 경로/하위 도메인/키, 할당량 및 제한.
하이브리드: 온 프렘 + 클라우드, 프라이빗 링크/피어링, 프라이빗 백엔드가 API 게이트웨이 뒤에 있습니다.

3) L7 라우팅 규칙

기준:
  • 호스트/경로: 'api. 예. com '→ '/v1/orders/'.
  • 헤더: 'X- 클라이언트', 'X- 지역', '사용자 에이전트', '수락'.
  • 방법/내용 유형: JSON/Proto/GraphQL 구별.
  • 쿼리/조각: 주의-캐시/변형에 영향을 미칩니다.
  • Geo/Latency: 가장 가까운 팝/지역, 성능 저하시 장애.
  • 가중/카나리아: 쿠키로 끈적 끈적한 트래픽 배포 90/10, 50/50.
  • 세션 친화력: 키/토큰을 기반으로 한 해시 기반 (스케일링 할 때주의).
예 (NGINX Ingress, 카나리아 중량):
yaml nginx. ingress. kubernetes. io/canary: "true"
nginx. ingress. kubernetes. io/canary-weight: "10" # 10% traffic to new backend
예 (특사, 헤더 기반 라우팅):
yaml match: { prefix: "/orders", headers: [{name: "X-Experiment", exact_match: "new"}] }
route: { cluster: orders-v2 }

4) 프로토콜 및 호환성

REST/JSON-기본적으로 클라이언트 유효성 검사/생성을위한 OpenAPI를 설명하십시

gRPC - TH/2에 대한 이진 프로토; 외부 클라이언트의 경우 gRPC-JSON 트랜스코딩을 사용하십시오

GraphQL - 집계 서비스; 주변에서 쿼리의 복잡성/깊이를 모니터링하십시오.

WebSocket/SSE-양방향/푸시; 끈적 끈적한 타임 아웃을 고려하십

KDE/2/3 (QUIC) - 멀티플렉싱/빠른 시작; WAF/프록시 호환성 검증.

5) 보안: 인증 및 인증

5. 1 운송

TLS 1. 주변에 2 +, HSTS, OCSP 스테이플 링, PFS.
B2B/내부 API 및 머신 투 머신 용 mTLS.
IP 허가자/명칭, 지리 구속 조건.

5. 2 응용 프로그램 계층

OAuth2/OIDC: JWT 베어러 토큰, 서명/만료/청중 확인.
NMAS/서명: 날짜 + 표준화 된 라인 + 서명 (AWS와 유사) - 대체, 반복 (nonce/time 창) 으로부터 보호합니다.
API 키: 식별자로서 만; RBAC/ABAC/scopes를 통한 권리.
CORS: 명시 적 허용 원산지, 비행 전 캐시.
WAF: 서명 (OWASP API Top 10), 이상, 봇 보호, 재귀 JSON 필드.
DDoS/남용: 연결 제한, 토큰 버킷/누출 버킷, 버스트 + 평균 속도, 동적 금지.

예 (콩, OIDC 및 리미터):
yaml plugins:
- name: oidc config: { issuer: "...", client_id: "...", client_secret: "...", scopes: ["orders. read"] }
- name: rate-limiting config: { minute: 600, policy: local }

6) 검증, 변환 및 호환성

계획: OpenAPI/JSON-Schema/Protoguy에 따른 신체/헤더/매개 변수 검증.
변환: 필드 정규화, PII 마스킹, 상관 헤더 추가 ('추정', 'x- 요청 -id').
버전: '헤더: X-API-Version', 접두사 '/v1 ', 리소스 버전; 탈퇴 정책 1부터 시작하십시오.
후방 컴파트: 애드 필드 만; 새 버전없이 "파괴" 변경을 피하십시오.
이념성: 'Idempotency-Key' 게이트웨이는 TTL과 함께 Redis에 키를 저장합니다.

7) 탄력성: 연결 정책

시간 초과: 연결/읽기/쓰기; 합리적인 기본값 (예: 1/5/5).
구제: 안전하고 유쾌한 경우에만; 지터, 지수 백오프, 최대 시도.
회로 차단기: 오류/대기 시간에 열기; 샘플을 위해 반 개방.
이상 탐지-풀에서 잘못된 인스턴스를 제거합니다.
벌크 헤드/경쟁: 경로 당 동시 요청 제한.
실패: 능동/수동, 구역 저하.
그림자 트래픽: V2 "회색" 은 V1과 평행하게 실행됩니다 (응답에 영향을 미치지 않음).

예 (특허 회로 차단기):
yaml circuit_breakers:
thresholds:
- priority: DEFAULT max_connections: 1024 max_pending_requests: 2048 max_retries: 3

8) 캐싱 및 성능

HTTP- 치즈: '캐시 컨트롤', 'ETag/If-None-Match', 'Vary', '부실한 동안 재발행'.
가장자리 캐시/팝: 정적 및 캐시 된 API를위한 CDN (demempotent GET).
압축: 'ggip/br' (압축되지 않은 압축).
요청 붕괴 ("통합"): 동일한 병렬 요청 결합.
응답 성형: 필드/필터, 커서 기반, 크기 제한.

9) 관찰 및 운영

'l7 _ req _ total {route, 메소드, 코드}', 'latency _ ms {p50, p95, p99}', 'upstream _ aults', 'Reshit _ count', 'cb _ rate', '429 _ rate', '쿼터 _ usage {테넌트'.
로그: 구조적, 'trace _ id/span _ id', 'user _ id/tentent _ id', 'client _ ip'.
추적: W3C 추적 컨텍스트 ('traceparent', 'tracestate') 는 업스트림으로 전파됩니다.
감사: 누가 어떤 권리를 가지고 무엇을 일으켰는지; 민감한 API를위한 불변의 저장소.
SLO/SLA: 대상 p99, 오류 예산; 루트 레벨이 글로벌 레벨보다 낫습니다.

10) 용량 계획 관리

최소/시간/일에 테넌트/키/고객 풀 쿼터.
버스트 + 지속 한계; 스무딩을위한 새는 양동이.
공정성: 과부하 된 경우-" 처음 만난 "대신 공정한 큐잉.
우선 순위: 우선 순위 및 전용 수영장이있는 시스템/중요 경로.

11) 관리 및 릴리스 변경

카나리아/청록색: 무게 라우팅; SLO에서 자동 전진 (오류/대기 시간).

기능 게이트/백엔드 플래그: 헤더/토큰으로 활성화

그림자/diff 유효성 검사기: 신체/상태 비교, 델타 공차.
준비: 할당 된 도메인/경로 ('준비. 아피... '), 개별 키 및 할당량.

12) 설정 예

12. 1 NGINX-기본 제한 및 캐시 게이트웨이

nginx map $http_x_request_id $reqid { default $request_id; }

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

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

security add_header Strict-Transport-Security "max-age = 31536000" always;

location /v1/ {
limit_req zone=perip burst=30 nodelay;
proxy_set_header X-Request-ID $reqid;
proxy_set_header Authorization $http_authorization;
proxy_connect_timeout 1s;
proxy_read_timeout 5s;

proxy_cache api_cache;
proxy_cache_valid 200 10s;
proxy_cache_use_stale error timeout updating;
proxy_pass http://orders-v1;
}
}

12. 2 특사-밸런스 및 리트레이 라우팅

yaml routes:
- match: { prefix: "/orders" }
route:
weighted_clusters:
clusters:
- name: orders-v1 weight: 90
- name: orders-v2 weight: 10 retry_policy:
retry_on: "5xx,reset,connect-failure"
num_retries: 2 per_try_timeout: 2s

12. 3 Traefik-미들웨어 및 헤더

yaml http:
middlewares:
secHeaders:
headers:
stsSeconds: 31536000 contentTypeNosniff: true routers:
api:
rule: "Host(`api. example. com`) && PathPrefix(`/v1`)"
service: svc-orders middlewares: ["secHeaders"]

13) 반 패턴

모두에 대한 하나의 세계적 한계 - "좋은 이웃" 은 "시끄러운" 때문에 고통 받고 있습니다.
dempotency가없는 배상 → 중복 효과 (지불, 엔터티 생성).
'타임 아웃 '/' 최대 바디 크기' 를 무시하고 근로자를 교수형에 처하게합니다.
게이트웨이에서 엣지 정책과 비즈니스 로직을 혼합합니다 (경계 가중).
체계의 검증 부족 → 고객의 취약성 및 "파괴" 릴리스.
정의/제한/유휴 시간을 제외한 Naked WebSocket.
회전없이 헤드 라인의 비밀; 내부 B2B에는 mTLS가 없습니다.

14) 테스트 플레이 북 (게임 데이)

요청 폭풍: 리미터/할당량 확인, 429 동작, 저하.
하나의 클러스터 손실: failover/weight 재분배; SLO 카나리아.
가중 답변: 최대 본체/타임 아웃; 관절을 자릅니다.
주사/이상: WAF 규칙, 재귀 JSON 억제, 큰 GraphQL 깊이.
추적은 '추적 가능한' 전파 및 샘플링을 확인하지 못했습니다.
비밀: 키 회전/JWKS, 토큰 만료, 시계 왜곡 허용 오차.

15) 구현 점검표

  • 도메인/경로/버전 정의, OpenAPI/프로토 게시.

(PHP 3 = 3.0.6, PHP 4)

  • 인증 (OIDC/HMAC), RBAC/scopes, CORS가 활성화되었습니다.
  • 임차인 당 한도/할당량, 공정 대기열, 429-UX.
  • 무게/헤더 라우팅, 카나리아 계획 및 롤백.
  • 타임 아웃/재 시도/회로 차단기/특이 치 정책.
  • 체계 검증, 변환, PII 마스킹.
  • Edge-ке/ETag, 합병, ggip/br.
  • 관찰 가능성: 메트릭, 로그, 트랙, 대시 보드 및 경고.
  • 런북: 사건, 키 회전, 블록 목록, 검은 금요일.

16) FAQ

Q: API 게이트웨이는 서비스 메쉬와 어떻게 다릅니 까?
A: 게이트웨이 - 남북 (외부 경계, 종단 간 정책). 메쉬 - 동서 (트랙 클러스터 연결/MSL/retrai). 종종 함께 사용됩니다.

Q: 구현할 곳: 게이트웨이 또는 서비스에서?
A: 두 수준: 게이트웨이-거친 입자 (인증, 기본 권리/할당량), 서비스-세밀한 (도메인 역할/속성).

Q: gRPC-JSON 트랜스코딩은 언제 필요합니까?
A: 내부 gRPC 및 외부에는 REST/JSON 및 간단한 클라이언트/브라우저가 필요합니다.

Q: 버전 지정 전략을 선택하는 방법?
A: 공개 API의 경우 경로 '/vN '+ 박탈 헤더와 긴 겹침. 내부 기능 플래그/호환성 체계.

17) 총계

API 게이트웨이는 단순한 프록시가 아니라 정책과 탄력성의 중심입니다. 적절한 라우팅, 보안, 한계, 검증 및 관찰 가능성은 예측 가능성과 릴리스 속도를 제공합니다. 엣지 게이트웨이를 서비스 메시, 자동화 카나리아 및 할당량, 테스트 고장과 결합하면 병목 현상이 아닌 가속기가됩니다.

Contact

문의하기

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

Telegram
@Gamble_GC
통합 시작

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

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

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