GH GambleHub

APIゲートウェイとルーティング

1)アーキテクチャにおけるAPIゲートウェイの役割

APIゲートウェイは、マイクロサービスへのエントリーの1つのポイントです。彼は次のとおりです:
  • リクエストをルーティングします(path/headers/geo/weight/version)。
  • 周囲(TLS/mTLS、 WAF、 DDoS、レート制限、authN/Z)を保護します。
  • トラフィック(カナリア/AB、シャドウ/ミラー、サーキットブレーカ、レトラ、タイムアウト)を制御します。
  • プロトコル(REST/gRPC/WebSocket)、ヘッダ、コードを標準化します。
  • 観察(ログ、メトリック、トレース、相関)。
  • 変換と検証(JSON/XML、正規化、スキーマ検証)。

iGamingの場合、地理的コンプライアンス(国/年齢のブロック)、スマート支払いルーティング、およびエッジ上の責任あるゲームポリシーでもあります。

2)ルーティングオプション

パスベース:'/api/v1/payments/→ payments-svc'。
ホストベース:'eu。API。例を示します。com→eu-edge'、'psp。例を示します。com→psp-proxy'。
ヘッダーベース:'X-Client: partner-A'→partner backend;'Accept: application/grpc'。
地理ルーティング:IP/ASN/国 (GDPR/ローカル禁止、レイテンシ)による。
Weighted/Canary: '90%'、古いバージョンでは'10%';クイックロールバック。
請求ルーティング:JWT。主張しています。tier/role/region'(例えば、ハイローラー→プレミアム制限)。
フェイルオーバー:データセンター/クラウドとPSP間の資産/資産責任。

3)周囲の保証

どこでもTLS: TLS 1。外装は2+、内側はmTLS (shlyuz↔servisy)。
OAuth2/JWT:署名検証、監査'exp/nbf/aud/scope'、 JWKSローテーション;TTLによる検証キャッシュ。
HMAC: webhook/paymentのためのボディ署名。
APIキー:システムクライアント用;クォータ/ロールに関連付けます。
WAF:基本ルール(注入、プロトコル異常)、ボディサイズ、国のリストを拒否します。
DDoS保護:接続制限、SYNクッキー、IP/キー/エンドポイントのレート制限。
ゼロトラスト:必須ポリシー(SPIFFE/SPIRE、サービスアイデンティティ)、最低権利の原則。
プライバシー:ログのPII編集、PAN/IBANマスキング、ストレージポリシー。

4)バーストに対する制限、クォータおよび保護

トークンバケット、漏れやすいバケット、固定/スライディングウィンドウ。
境界:IP単位、キー単位、ユーザー単位、ルート単位。

任意:
  • バースト+持続(例:'50 rps burst'、 '10 rps sustain')。
  • Retry-BudgetとSlow-Loris保護(タイムアウトの読み取り)。
  • パートナーのための日/月ごとのクォータ。

5)変革と検証

ヘッダー(trace-id、 locale、 client-id)を正規化します。
リクエスト/レスポンスマッピング。
プロキシ前のスキーマ検証(OpenAPI/JSONスキーマ)-4xxの初期障害。
圧縮/'Accept-Encoding'、キャッシュ(下記参照)。

6)キャッシュとパフォーマンス

ディレクトリ、パブリックメタデータ、configs (TTL、 'ETag'/'If-None-Match')のエッジキャッシュ。
熱いGETのためのマイクロキャッシュ1-5 s(ピーク負荷を減らします)。
ネガティブキャッシュショート(404/空)-注意してください。
p95> thresholdのレプリカに対するヘッジリクエストと競合要求。

7)タイムアウト、リトリート、回復力

タイムアウト:別に接続/読み取り/書き込み;適度なp95ランドマーク。
Retrai: backoff+jitterを使用したidempotentメソッド(GET/PUT);再試行予算。
POST idempotency: 'Idempotency-Key'+service/gateway deduplication。
サーキットブレーカ:エラー/レイテンシによって;ハーフオープントライアル。
上流による隔壁/プール分離。

8)バージョン管理と互換性

メソッド:
  • URI: '/v1/……'(単純で「ノイズが多い」ルート)。
  • ヘッダー/コンテンツネゴシエーション:'Accept: application/vnd。app。 v2+json'。
  • Feature-flags/server capability-マイナーチェンジの互換性のために。

ポリシー:SemVer、サポートウィンドウ(例えば、'v1'=12-18ヶ月)、減価償却スケジュール、拡張のための互換性のある応答(フィールドの追加は壊れません)。

9)観察可能性および品質管理

相関:'traceparent'/'x-request-id'が必要です。私たちはそれを捨てます。
OpenTelemetry: RPS/p50/p95/p99/5xx/4xx、飽和、再試行/回路イベントメトリック。
ログ:構造JSON;PIIを偽装する。コードごとにレベルを設定します。
トレースサンプリング:基本的な5-10%+エラー/遅いターゲット。
SLO/アラート: routes/clients (uptime、 latency、 error)による。

10)リリーストラフィック管理

青緑DNS/LBスイッチ。
カナリア州:体重シェア/セグメント(地域、パートナー、役割)。
Shadow/Mirror:クライアントに応答せずに新しいバージョンへのトラフィックのコピー。
キルスイッチ:問題のあるアップストリーム/フィーチャーをすばやく無効にするフラグ。

11)スマートな支払のルーティング(iGaming)

PSPの選択規則:地理、通貨、金額、リスク率、可用性、手数料。
フェールオーバーPSP: '5xx/timeout'での自動遷移。
Same-method rule:元のメソッドを使用して返す/出力-エッジでチェックします。
支払いID: 「userId+amount+currency+purpose」のキー。
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キャッシュ)。
  • タイムアウト/リトレイ/Idempotencyが設定されています。
  • 制限:IP単位、キー単位、ルート単位;パートナー・クォータ。
  • リクエスト/レスポンススキームの検証。
  • 'trace-id'、 PIIマスクでログとトレース。
  • SLO/アラートとダッシュボード。
  • Geo-rules/compliance/ageチェック。

取引と支払い

  • PSPスマートルーティング:ルール、優先順位、Feilover。
  • 同じ方法がエッジでチェックされます。
  • 顧客の透過的なステータスとエラーコード(未加工のPSPコードなし)。

リリース

  • カナリア/ABとキルスイッチ、ロールバック計画。
  • 新しいバージョンへのシャドウトラフィック、メトリックの比較。
  • 負荷テストとp95ターゲット。

15)品質指標(最小)

ルート別の可用性/SLO;エラー率5xx/4xx。
レイテンシp50/p95/p99(外部および内部)。
再試行/タイムアウト/回路イベント(ノイズレベル)。
キャッシュのヒット率とRPSの節約。
Rate-limitヒットとドロップリクエスト。
PSPルーティングKPI:成功、TtW、 feiloverの割合、コミッション。

16)アンチパターン

1つの合計制限「すべてのために」。
「インスタント」はジッターなしで後退する(嵐の激化)。
正規化と信頼されたプロキシリストなしで'X-Forwarded-For'を信頼する。
p95を除くハードタイムアウト(誤検出)。
互換性を破るハードトランスフォーメーション。
PII/PAN/secretsでログを記録します。
同じドメイン/ポリシーで内部APIと外部APIを混在させます。

17)応答パターンとエラー(マイクロコピー)

429リクエストが多すぎる: "リクエストの制限に達しました。N秒で繰り返すか、パートナーのオフィスでクォータを増やす"

401/403: "トークンは無効/期限切れです。もう一度サインインしてください"

408/504: "サービスは予想よりも長く応答します。リクエストは受け入れられませんでした"

Idempotency-conflict:「このIdempotency-Keyのリクエストはすでに処理されています(ステータス:成功/失敗)」。

18)実装プロセス(ステップ)

1.ルートモデル:ドメイン/パス/リージョンマップ。
2.セキュリティポリシー:TLS/mTLS、 WAF、 authN/Z、 keys/JWKS。
3.信頼性:タイムアウト、リトレイ、idempotency、サーキットブレーカ。
4.観測可能性:ログ/メトリック/トレース、相関。
5.キャッシュ/perf:エッジ/マイクロキャッシュ、圧縮、接続プール。
6.支払ルーティング:ルール、テスト、監視。
7.リリース:カナリア/シャドウ、キルスイッチ、ロールバック計画。
8.コンプライアンス/地域:カントリーフィルタ、データストレージ、年齢。

最終的なチートシート

厳密な周囲(TLS/mTLS、 WAF、限界)+管理された交通(retrai、回路、カナリア)。
→のエッジでの検証と変換は、欠陥「inside」よりも小さくなります。
trace-idとPIIマスクによる観測はオプションではなく、標準です。
iGamingでは、スマートな支払いルーティングとコンプライアンスの地理が重要です。
バージョン管理と剥奪ポリシー-パートナーの予測可能性。

Contact

お問い合わせ

ご質問やサポートが必要な場合はお気軽にご連絡ください。いつでもお手伝いします!

Telegram
@Gamble_GC
統合を開始

Email は 必須。Telegram または WhatsApp は 任意

お名前 任意
Email 任意
件名 任意
メッセージ 任意
Telegram 任意
@
Telegram を入力いただいた場合、Email に加えてそちらにもご連絡します。
WhatsApp 任意
形式:+国番号と電話番号(例:+81XXXXXXXXX)。

ボタンを押すことで、データ処理に同意したものとみなされます。