メインコンテンツまでスキップ

性能検証概要

本ドキュメントは、idp-server の性能検証に関する包括的な情報を提供する。

テスト環境

本ドキュメントの測定結果はローカル検証環境(2 vCPU × 2インスタンス、120 VU)での実測値です。 本番環境では個別に性能検証を実施してください。


目的

idp-server が以下の要件を満たすことを検証する:

  1. スループット: 想定負荷(中規模: 〜1,000 req/s)を安定して処理可能
  2. レイテンシ: 各エンドポイントが許容範囲内の応答時間で応答
  3. スケーラビリティ: テナント数・ユーザー数の増加に対して適切にスケール
  4. 安定性: 長時間負荷に対しても性能劣化がない

測定指標

スループット指標

指標説明目標値
TPS (Transactions Per Second)1秒あたりの処理トランザクション数エンドポイント依存
RPS (Requests Per Second)1秒あたりのHTTPリクエスト数〜1,000 req/s
イテレーション数シナリオ全体の完了数シナリオ依存

レイテンシ指標

指標説明目標値
平均応答時間 (avg)全リクエストの平均応答時間-
中央値 (med)応答時間の中央値-
p9090%タイルの応答時間-
p9595%タイルの応答時間500ms以下
p9999%タイルの応答時間1s以下

信頼性指標

指標説明目標値
エラー率失敗リクエストの割合0.1%未満
成功率成功リクエストの割合99.9%以上

テスト種別

ストレステスト (Stress Test)

システムの限界を特定するためのテスト。

  • 目的: 最大スループットとブレークポイントの特定
  • 負荷パターン: 120 VUs、30秒間の継続負荷
  • 評価対象: 各エンドポイント単体

ロードテスト (Load Test)

想定負荷での安定性を検証するテスト。

  • 目的: 実運用想定での性能安定性確認
  • 負荷パターン: 複合シナリオ、5-10分間
  • 評価対象: E2Eフロー(認証→トークン発行→検証)

スケーラビリティテスト

負荷増加に対するシステムの拡張性を検証するテスト。

  • 目的: 水平スケール時のスループット向上率
  • 評価対象: マルチテナント、ユーザー数増加

検証対象エンドポイント

OAuth 2.0/OIDC 基本フロー

エンドポイント用途優先度
/authorizations認可リクエスト
/tokensトークン発行
/tokens (client_credentials)Client Credentials Grant
/tokens (password)Resource Owner Password Grant
/introspectionトークン検証
/userinfoユーザー情報取得
/jwks公開鍵取得

CIBA フロー

エンドポイント用途優先度
/backchannel/authenticationsCIBA認証リクエスト
/authentication-devices/{id}/authentications認証トランザクション取得
/authentications/{id}/authentication-device-binding-messageバインディングメッセージ
/tokens (urn:openid:params:grant-type:ciba)CIBAトークン発行

性能目標サマリー

API単体TPS(1 HTTPリクエスト)

カテゴリエンドポイントTPS目標p95目標
認可Authorization Request2,000+200ms
トークン発行Token (Client Credentials)1,000+250ms
トークン検証Token Introspection2,000+200ms
公開鍵JWKS2,000+200ms
CIBABC Request1,000+250ms

フロー完了TPS(複数HTTPリクエスト)

フロー構成API数完了TPS目標p95目標
CIBA Full Flow5250+300ms

実測値はストレステスト結果を参照。

詳細は性能テスト方針を参照。


テストシナリオ一覧

ロードテスト

シナリオファイル説明設定読込
CIBA ログインscenario-1-ciba-login.jsシングルテナントCIBAフロー + Introspection自動
マルチテナントCIBAscenario-2-multi-ciba-login.js複数テナント並列CIBAフロー自動
ピーク負荷scenario-3-peak-login.jsランプアップ/ダウン負荷パターン自動
認可コードフローscenario-4-authorization-code.jsパスワード認証 → トークン → Userinfo → Introspection自動
設定の自動読み込み

ロードテストは performance-test-tenant.json から設定を自動読み込みします。 環境変数 BASE_URL のみ必要(デフォルト: http://localhost:8080

ストレステスト

シナリオファイル説明
認可リクエストscenario-1-authorization-request.js認可エンドポイント単体
BC Requestscenario-2-bc.jsCIBA認証リクエスト単体
CIBA Devicescenario-3-ciba-device.jsdevice パターン
CIBA Subscenario-3-ciba-sub.jssub パターン
CIBA Emailscenario-3-ciba-email.jsemail パターン
CIBA Phonescenario-3-ciba-phone.jsphone パターン
CIBA Ex-Subscenario-3-ciba-ex-sub.jsexternal subject パターン
Token Passwordscenario-4-token-password.jsPassword Grant
Token Client Credentialsscenario-5-token-client-credentials.jsClient Credentials Grant
JWKSscenario-6-jwks.js公開鍵取得
Token Introspectionscenario-7-token-introspection.jsトークン検証
Authentication Devicescenario-8-authentication-device.js認証デバイス
Identity Verificationscenario-9-identity-verification-application.js身元確認申請

ドキュメント構成

ドキュメント内容
01-test-environment.mdテスト環境・構成
02-stress-test-results.mdストレステスト結果
03-load-test-results.mdロードテスト結果
04-scalability-evaluation.mdスケーラビリティ評価
05-tuning-guide.mdチューニングガイド
06-test-execution-guide.mdテスト実行ガイド(Step-by-Step)
07-test-strategy.md性能テスト方針(テスト条件・評価基準)