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

ストレステスト結果

本レポートは、IDPシステムにおける各主要エンドポイントおよび業務フローに対するストレステスト結果とその考察をまとめたものである。テストはk6を使用し、各エンドポイント・フローに対して30秒間の高負荷を想定した仮想ユーザーからのリクエストを実施している。


🖥️ 実施環境

✅ ハードウェア・OS情報

  • MacBook Pro 14インチ (2023)
  • チップ: Apple M2 Max
  • メモリ: 64 GB
  • OS: macOS 15.0.1 (24A348)

✅ コンテナ構成(Docker Compose)

  • Nginx ロードバランサを使用し、idp-server を2台構成で起動
  • idp-server に CPU 2コア・メモリ 2GB のリミット設定(**G1GC有効。ただし、実験的にG1GCをOFFにした場合、レスポンス時間の短縮が確認されており、今後検討余地あり **)
  • PostgreSQL、Redis、Mockoon を起動
  • DB接続・キャッシュ関連パラメータは環境変数で設定し、Redisキャッシュは有効化
  • k6はホストマシンから直接実行

📊 テスト結果一覧

テスト内容リク数平均時間P95時間スループットエラー率
認可リクエスト62,35557.72 ms171.15 ms2076.49 req/sec0.00%
バックチャンネル認証リクエスト40,72288.40 ms208.28 ms1354.72 req/sec0.00%
CIBAフロー50,63571.33 ms215.26 ms1675.03 req/sec0.00%
トークン発行(password grant)1,432421.01 ms576.20 ms47.31 req/sec0.00%
トークン発行(client_credentials grant)45,89678.46 ms159.92 ms1526.68 req/sec0.00%
JWKS取得44,31581.21 ms106.52 ms1476.20 req/sec0.00%
トークンイントロスペクション89,90940.02 ms130.80 ms2993.61 req/sec0.00%
本人確認申込フロー(Federation + eKYC)2,840220.34 ms1311.39 ms86.93 req/sec0.00%
本人確認申込フロー(インデックス最適化後)976061.84 ms231.76 ms320.45 req/sec0.00%

💡 各テスト結果の考察

✅ 認可リクエスト

レスポンスも速くスループットも高い。認可リクエストの処理はシンプルで、ステートレスな設計が功を奏している。

✅ バックチャンネル認証リクエスト

POST単体でも比較的高速に処理されており、サーバー内でのトランザクション登録処理がボトルネックになっていない点が好印象。

✅ CIBAフロー

CIBA全体(auth + tx + bind + token + jwks)でP95が200ms台に抑えられており、実運用レベルでも十分な性能。特にG1GCをOFFにした構成では、レスポンスタイム・スループットともに向上しており、GC戦略の選定がパフォーマンスに与える影響が示唆された。

⚠️ トークン発行(password grant)

スループットが非常に低く、平均応答時間・P95ともに高い。主な原因は、パスワードのハッシュ処理(bcrypt) にあり、CPUバウンドな処理がリクエストごとに発生するため、高負荷時にボトルネックとなる。ユーザー認証の内部処理(DBクエリ、バリデーション)に改善余地あり。特に次のSQLクエリがボトルネックになっている

✅ トークン発行(client_credentials grant)

クライアント認証のため処理が単純で、スループットも高くパフォーマンスは良好。

✅ JWKS取得

キャッシュ戦略の有効性がうかがえる。高スループット・低レイテンシで文句なし。

✅ トークンイントロスペクション

処理が軽量なため、全体で最もスループットが高い。認証サーバー内でのキャッシュ・照合設計が効率的。

⚠️ 本人確認申込フロー(Federation + eKYC)

14ステップに及ぶ重厚なフローで、平均・P95ともに高レイテンシ。ビジネス上の要件を反映した複雑なステップが原因であるが、処理の非同期化やステージングの見直しで一部改善可能。

✅ 本人確認申込フロー(インデックス最適化後)

インデックス追加により大幅な改善が見られ、P95時間が 1311ms → 231ms へと劇的に短縮された。全体の応答時間も平均60ms台となり、複雑なフローに対してもインデックス最適化が極めて有効であることが確認された。


🧠 総合所見

  • ステートレス設計・キャッシュ戦略が導入されているエンドポイントほどパフォーマンスが良好。
  • 複雑なビジネスロジックが絡む場合(password grant / 本人確認フロー)は応答時間が大幅に増加。
  • CIBAフロー全体の最適化状況は良好で、業務向け利用に耐える性能が確保されている。
  • 全体として、スループット・応答時間・安定性いずれも高水準であり、スケーラビリティに優れた実装がなされている。

さらなる改善余地としては、以下が挙げられる:

  • 本人確認フローにおける非同期実行戦略の導入
  • 高頻度API(introspection / jwks)に対する専用キャッシュ階層の強化
  • G1GCの除外またはGC戦略の再検討によるレイテンシ改善