Logo GH

運用と→管理運用インフラストラクチャのスケーリング

運用インフラのスケーリング

1)なぜ「スケーリング」と見なされるのか"

スケーリングは、SLOを失うことなく、制御コストでスループット(RPS/TPS、接続、IOPS、スループット)とデータ量を増加させるプラットフォームのシステム能力です。iGaming/fintechの場合、これは直接お金についてです:入金/賭けの変換、ライブゲームや決済。

目的:
  • SLOをX倍の負荷増加と季節のピークに保ちます。
  • 予測可能なスケーリング時間(分、時間ではなく)を提供します。
  • 経済を節約する:コスト/RPS、コスト/トランザクション、コスト/1kイベント。

2)拡張可能なプラットフォームの原則

1.水平最初:小さい、ステートレスなサービスへの分割;status-データクラスタ内。
2.背圧とキュー:スムージングバースト、「嵐」に対する保護。
3.すべてのレイヤーでのキャッシュ:client/edge/service/database。
4.Idemotenceと再現性:安全なリトリート、アウトボックス、デッドアップ。
5.制約のある依存関係:タイムアウト、ブレーカ、隔壁分離、レート制限。
6.容量信号による観測性:ヘッドルーム、p95/p99、ラグ、接続、クォータ。
7.ガードレールによる自動スケーリング:HPA/VPA/クラスターオートスケーラー+停止条件。
8.設計による複数の地域:独立した爆破地帯、ローカルデータ、安定したfylovers。

3)容量計画: 「必要な量を計算する方法」

モデル入力:ターゲットピークTPS、トラフィックプロファイル(1時間)、「クリティカルパス」、キャッシュヒット率、平均ペイロード、SLO、プロバイダの制限。

クイックアセスメント(rule-of-thumb):
  • RPS→CPU/pod: 'pods=RPS p99_time/effective_CPU_in_pod'(マージンは30〜50%)。
  • キュー:'minimum_speed_of_consumers ≥ peak_speed_of_producers 1。2`.
  • DB接続:'max_conns=active_service_pools medium_pool_size 1。3`.
  • キャッシュ:size=「N分でホット作業セット」+20-30%マージン。
  • Egress/CDN: peak egress=peakリクエストの平均応答サイズ(圧縮を考慮)。

ヘッドルーム:20-40%ピーク時の目標(層によって)。15%以下→「容量アップリフト」トリガー。

4)レイヤーとスケーリングパターン

4.1 エッジ/CDN/WAF

エッジキャッシング(TTL+SWR)、ジオバランス、圧縮、HTTP/2/3。
IP/JWT/keyによる周囲の速度制限、サージ保護。
ブローカー/パブ/サブチャンネルを通じたイベントファンアウト(ジャックポット、ライブアラート)。

4.2バックエンド・フォー・フロントエンドAPIゲートウェイ

スタトルによる水平スケーリング、ダウンストリームによる専用プール。
ビジネスメトリクスによるHPA: RPS、 p99、ワークプールキュー-CPUだけではありません。

4.3非同期キュー/ストリーミング(Kafka/Rabbit/Pulsar)

当事者と消費者によるスケール;skew(キーとディストリビューション)を避けます。
遅延アラート+消費者の自動スケーリング;DLQと再試行のトピック。
SLAの調整とリプレイの下での保持。

4.4キャッシュ(Redis/Memcached)

クラスタモード、レプリカ、立ち退きポリシー(LFU)、マルチジェット、パイプライン。
ホットキーとバックグラウンドタスク、クライアント制限、最大メモリポリシーの分離。

4.5データベース

レプリカと読書ルーティング、接続プールを読んでください。
地域/テナント/キー範囲によるシャーディング。
CQRS:マスター/リーダーに書き込み、レプリカに読み込みます。

インデックス作成と一括作成ワークフロー(outbox→stream→sink)

アーカイブとホット/コールドデータ(階層化)。

4.6ファイル/オブジェクトストア

マルチスレッド、マルチパートダウンロード、CDNフロント、非同期変換。
プロバイダのクォータ、テールクリーニング、排出予算。

4.7プロバイダー(PSP/KYC/スタジオ)

マルチベンダーと見積もり/SLO/コストルーティング。
各プロバイダ、リトレイキュー、「グレースモード」の回路ブレーカ+レート制限。

5)自動スケーリングおよび監視柵

Kubernetes:
  • HPA: 'rps_per_pod'、 'queue_depth'、 'p99_latency'; 'targetAverageValue'。
  • VPA:リソースガイドライン;ピークから更新してください。
  • クラスタオートスケーラー:優先順位を持つスポット+オンデマンドプロファイル。
  • PodDisruptionBudget/TopologySpreadConstraints:ゾーン全体で統一。
  • LimitRange/ResourceQuota:「酔った」デプロイに対する保護。
HPA疑似マニフェスト:

apiVersion: autoscaling/v2 kind: HorizontalPodAutoscaler spec:
scaleTargetRef: {apiVersion: apps/v1, kind: Deployment, name: api-gw}
minReplicas: 8 maxReplicas: 200 metrics:
- type: Pods pods:
metric:
name: rps_per_pod target:
type: AverageValue averageValue: "120"
- type: Pods pods:
metric:
name: p99_latency_ms target:
type: AverageValue averageValue: "280"
behavior:
scaleUp:
stabilizationWindowSeconds: 90 scaleDown:
stabilizationWindowSeconds: 300
ガードレール(例):
  • 「Pause&Rollback」、 canary p99> 1の場合。3 ×ベースライン10分。
  • 「フリーズスケールダウン」プライムタイムでは、スケールアップのみ。
  • 'open_circuit=1'の「Stop retries」をボトルネックにします。

6)複数の地域: 資産/資産および資産/責任

ブラスト分離された領域:独立したクラスタ、ローカル秘密/クォータ。
グローバルルーティング:遅延/ジオベース、ヘルスプローブ、手動オーバーライド。

データ:
  • ホット-ローカル+最終的なレプリケーション(ストリーム)。
  • 重要なトランザクション-ドメイン(レジャー/残高)によって整合性があります。
  • フェイルオーバープレイブック:ステップバイステップのソース変更、TTL、ウォームアップキャッシュ。
  • 練習規則(DR): RTO/RPOの目標を持つ四半期ごとのトレーニング。

7)ネットワークおよびサービスパターン

サービスメッシュ:mTLS、再試行/ブレーカ、アウトリア検出、ダウンストリーム当たりの制限。
L4/L7のeBPF/Observability、接続限界、ヘッド・オブ・ライン保護。
S2S、一般的なレート制限および監査のための内部APIゲートウェイ。
ブラストゾーンによるVPC/サブネット、 NAT/Egressコントロール、ベンダーとのピアリング。

8)性能: テストおよび証拠

プライムタイム+ワーストケースプロファイルの負荷と応力。
Soak (long)-メモリ/ディスクリプタのリーク、レイテンシの増加。
Chaos/game-days:ブローカー/プロバイダ/ゾーンドロップ、「slow provider」。
Perf regressions in CI:参照シナリオと自動ゲートのセット。

ミニシナリオマトリックス:
シナリオプライバシーポリシー[しきい値]
預金TPS × 2ピーク時の支払いp99 ≤ 350ms、 SR ≥ 99。5%
ジャックポットブロードキャストファンミスWS接続≤ 90%の制限、ドロップなし
KYCスローダウン外部プロバイダAutodegradation+Feilover ≤ 2分

9)データとストレージ: 成長戦略

天井への垂直成長→水平/シャーディング。
読み取り→レプリカ/キャッシュ;記録→batch/asynchron/log。
スキーママイグレーション:展開→マイグレート→コントラクト、グローバルロックなし。
アーカイブ:安価なストレージへのコールドバッチ+オンデマンドの再水和。
Search: incremental updates pipelineの個別インデックス(OpenSearch/Solr)。

10)プロバイダとクォータの管理

クォータカード(TPS、窓、費用);alerts 'usage_ratio> 0。9`.

コスト/品質によるルーティング(スマートルーティング)。
OLA ↔ SLO契約とクォータ増加プロセス。
選択肢のプールと「ホット」スイッチング。

11)観測性およびスケーリング信号

メトリック(最小):
  • 容量ヘッドルーム'queue_lag/backlog growth'; 'kafka ISR'; 'db connections'/'repl lag'; 'redis evictions'; 'open_circuit'/'retry_rate'; 'quota_usage'。
  • ビジネスメトリクス:成功率/デポジット変換、ゲーム開始時間。
  • コスト:コスト/RPS、 コスト/1kコール。
ダッシュボード:
  • 容量の概要(ヘッドルーム、トップリスク、バーンレートSLO)。
  • ストリーム&キューパネル(遅延/バックログ、消費者飽和)。
  • DBとキャッシュ(p99、接続、ヒット/立ち退き)。
  • プロバイダと見積もり(TPS、タイムアウト、コスト、スイッチング)。
  • 安全性の変更(プレリリース/ポストリリース、カナリア、オートゲート)。
アラート(アイデア):

ALERT HeadroomLowAPI
IF capacity_headroom{layer="api"} < 0. 15 FOR 10m

ALERT KafkaBacklogAtRisk
IF (consumer_lag > 5e6 AND rate(consumer_lag[5m]) > 5e4) AND (hpa_desired == hpa_max) FOR 10m

ALERT DBConnectionsNearMax
IF active_conns / max_conns > 0. 85 FOR 5m

ALERT ProviderQuota90
IF usage_quota_ratio > 0. 9 FOR 5m

12) FinOps: スケーリングは有益です

効率の比率:コスト/RPS、コスト/デポジット、コスト/1kイベント。
右サイジング:VPA/推奨事項、過剰プロビジョニングレポート。
非臨界のための点/Preemptible;ベースロードの予約/コミット。
排出予算とキャッシュ、CDN/エッジオフロード。
値レベルによるログの収集とアーカイブ(ホットとコールド)。
延長のための警告のクォータ(ソフトキャップ)および自動切符。

13)プロセスと人々

変更管理:カナリア、フィッシュフラグ、回帰の停止。
Incident-readiness: runbook'と「where to add capacity」、 「how to switch region」。
スケジューリングピーク:マッチ/トーナメント/キャンペーンカレンダーとプロバイダのウィンドウ。
通常の試合日とDR演習。
所有者マトリックス:誰がfeilover/増加クォータの「ボタンを押す」ことができます。

14)実装チェックリスト

基本的なスケーラビリティの開始(2〜4週間):
  • クリティカルパスとリミットのマップ(レイヤー別)、ヘッドルームターゲット≥ 30%。
  • ビジネスメトリックによるHPA+クラスタオートスケーラー;PDB/SpreadConstraints。
  • ホットパス、idempotency-keys、 outbox上のキュー。
  • キャッシュ:ヒット目標≥ 90%、立ち退きポリシー、キーインデックス。
  • DB:読み取りレプリカ、接続プール、シャーディングプラン。
  • プロバイダ:マルチベンダー、クォータ、ブレーカー/リトリート。
  • ダッシュボード「Capacity/Stream/DB/Providers」、第11条のアラート。
  • カナリアとリリース前/リリース後のオートゲート。
  • DRプレイブックと1つの部分的なfeiloverトレーニング。
主要なピークの前に:
  • キャッシュのウォームアップ、事前スケールHPA/ASG、ウォームスタンバイレプリカ。
  • プロバイダのクォータを増やし、スマートルーティングを有効にします。
  • 重要でないアラートのナイトモード抑制を有効にします。
  • 「セーフモード」機能は即刻の活発化のために準備ができています。

15)アンチパターン

水平ではなく垂直に「フルストップ」をアップグレードします。
すべてのダウンストリームのスレッド/接続の一般的なヘッド・オブ・ライン・プール。
ボトルネックタイムアウトのレトライ、ジッタ→ストームの欠如。
アラートやスケールポリシー→「ソーイング」にヒステリシスはありません。
データシャーディングとローカライズのない単一のグローバルデータベース。
タイムアウト/リトレイ/オブザビリティコントロールなしのベンダーSDKに対する盲目的な信頼。
DR演習の欠如:feilover「紙にのみ」。

16)スケーラビリティKPI

ピーク時のSLOコンプライアンス(p95/p99、成功率)。
ヘッドルームはプライムタイムでレイヤー。
MTTS (Mean Time To Scale)-追加リソースが利用可能になるまで。
Backlog/Lag Resolution Time-キューがピーク後に崩壊する時間。
アクティブな成長期間の失敗率を変更します。
コスト/RPSとキャッシュ/CDN/エッジオフロードからの節約。
DRの準備:練習のRTO/RPO。

17)「クイック」テンプレートの例

カフカ:消費者の参加とオートスケール(アイデア):

partitions(topic="bets") = ceil(peak_msgs_per_sec / target_msgs_per_partition)
consumers = min(partitions, max_pods); rebalance_on: skew > 1. 5x scale_up_if: lag > 5e5 && rate(lag[5m]) > 5e4
PostgreSQL:

max_connections = poolers pool_size 1. 3 read_routing: primary (write), replicas (read majority)
shard_key: tenant_id or region_id
Redis:

maxmemory-policy: allkeys-lfu cluster-replicas: 1 evict-alert: rate(evictions[5m]) > 0 && used_mem/limit > 0. 8
カナリアオートゲートポリシー(要約):

guardrails:
- metric: api_p99_ms, threshold: 1. 3 baseline_1d, window: 10m, action: pause_and_rollback
- metric: error_rate, threshold: 2 baseline_1d, window: 5m, action: pause max_step: 10%
step_interval: 15m

18) FAQ

Q:最初にスケールする何か?
A:ダッシュボードに応じたボトルネック:キュー/キャッシュ/データベースの読み取り。ホットパス(デポジット/ベット/ゲームの起動)が優先されます。

Q: 自動スケーリングが「それをより悪くする」ことを理解する方法か"?

A:相関関係を参照してください:scale- up(上)、およびp99/errorsは改善しません-おそらく「問題をスケール」(ストリーム/クォータを絞り込む)。ブレーカ/劣化を含む。

Q:第2提供者を常に必要としますか?
A:クリティカルパスの場合は、はい。そうでなければ、少なくとも単純化されたスクリプトとキャッシュを持つ「セーフモード」。

Q: アクティブアクティブpassive?
A: RTO要件が低く、多くの地域プレーヤーがアクティブである場合。それ以外の場合は、使用済みのfeiloverでactive-passiveから始めます。

Contact

お問い合わせ

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

Telegram
@Gamble_GC
統合を開始

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

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

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