🚕

Oktaタスクの処理時間を短縮するため、アカウントの読み書きを高速化しました

概要

「Oktaのタスク実行が遅い(1件あたり約93秒・1分に3~5件しか処理されない)」というお客様からのご報告への対応です。原因のひとつであった、アカウントの情報を読み出す処理と書き込む処理の両方を高速化しました。
対象は Okta だけではなく、アカウントを扱う全ての業務アセット共通です。タスク実行(アカウントの作成・更新・削除)や、アカウント一覧・名寄せ・棚卸しなどの画面表示が、データ量の多いテナントほど速くなります。画面の見た目や操作方法は変わりません。

詳細

何が速くなるか

書き込み側(今回の主因への対応)
  • タスク実行(アカウントの作成・更新・削除、グループの割当・剥奪など)
読み出し側
  • アカウント一覧の表示
  • アカウントとメンバーの紐付け(名寄せ)
  • 棚卸し
  • 違反の判定

どれくらい速くなるか

効果はSaaSのアカウント数に比例します。従来は1件扱うだけでもその業務アセットの全アカウントと割当を読んでいたため、アカウントが多いお客様ほど遅くなる構造でした。今回は、SaaSに何件アカウントがあっても、操作対象のアカウントぶんだけを読む形になります(今回ご報告いただいたお客様は約3,000アカウント規模)。
そのため、アカウントの少ないお客様では体感しにくく、数千件規模のお客様で大きく効きます。

例:3,000アカウントのSaaSで、100アカウントのグループ割当を行う場合

従来
  1. 1アカウント目を処理するために3,000件すべてを読み込む → 1アカウント目を更新
  1. 2アカウント目を処理するためにまた3,000件すべてを読み込む → 2アカウント目を更新
これを100回くり返すので、合計で30万件ぶんの読み込みが発生していました。
今回
  1. 1アカウント目のぶんだけ読み込む → 1アカウント目を更新
  1. 2アカウント目のぶんだけ読み込む → 2アカウント目を更新
100回くり返しても、読み込むのは100アカウントぶんだけです。
1件ずつ処理していく流れは従来と変わりません。変わったのは、1件処理するたびに全件を読み直していた無駄をなくした点です。
なお「30万件」は説明のための単純計算(100回 × 3,000件)です。実際には並行して動く部分があるため、所要時間がそのまま100倍になるわけではありません。

タスク1件あたりの時間はどうなるか(見込み)

大幅な短縮を見込んでいますが、具体的な秒数は計測で確認します。約93秒の内訳はまだ計測できておらず、また後述のとおり未対応の要因も残っているためです。
実測は、いったん Staging 環境で行う予定です。

機能の変更について

データの探し方を効率化しただけで、画面の見た目・操作方法・表示される内容は従来と同じです。