WebPlatform/AppFramework Ver.7.2 パッチ6の要件16570にて、IM-共通マスタからアプリケーション共通マスタへの同期処理のパフォーマンス改善を行い、下記効果を確認しました。
インポート種別と改善効果 |
インポートを行う度の処理時間上昇率の改善 |
同データ量でのインポート処理時間の改善率 |
ユーザプロファイル | 平均 9% が 8% に改善 | 約50%~60%改善 |
会社・組織 | 平均 26% が 12% に改善 | 約50%~80%改善 |
たとえばCSVのスナップショットインポートに3時間かかっていたのが1時間ほどに短縮されるような改善効果が期待できます。
検証内容および検証結果については下記の通りです。
検証環境および検証内容
下記環境にて、ユーザアカウント500人、102組織、19役職から構成される会社のデータを、毎日連続して同じデータを10日間インポートします。
※英語と日本語の多言語環境のため、データ量は2倍となります。
ユーザプロファイル比較検証結果
ユーザプロファイルのデータを1日ごとに10日間連続でインポートした場合をパッチ5とパッチ6の環境での比較検証結果です。
※1回目はデータが空の状態からインポートしています。
会社・組織比較検証結果
会社・組織(組織/組織内包/役職/組織所属/組織所属役職)のデータを1日ごとに10日間連続でインポートした場合をパッチ5とパッチ6の環境で比較検証結果です。
※1回目はデータが空の状態からインポートしています。
検証結果考察
はじめに、要件16570の改善内容の詳細は下記の通りです。
終了日移動処理 |
スナップショットインポート処理では、インポートの開始日、終了日と既存データの開始日、終了日を比較して処理を分岐しています。 インポートの終了日と対象データの終了日を比較して、インポートの終了日が小さい場合は対象データの分割処理を行い、それ以外の場合は対象データの終了日移動処理を行っていました。 インポートの終了日と対象データの終了日が等しい場合は終了日移動処理を行う必要はないので、処理をしないように改善しました。 |
主所属取得処理 |
同期処理の中で、組織に所属するユーザのリスト、または、ユーザが所属する組織のリストを取得する箇所があります。 ここでは主所属と主所属以外の所属を取得していますが、主所属と主所属以外の所属を一度に取得できるため、一度に取得するように改善しました。 |
所属同期処理期間 | 組織の同期処理の中で、所属の同期処理を行うときに、該当所属の全期間を同期対象として処理をしていました。これを、同期処理の対象期間内に絞って所属の同期処理を行うように改善しました。 |
パッチ5の場合、インポート回数が増えていくと遅くなる原因については以下のように分析しております。
IM-共通マスタで組織/組織内包情報をインポートした場合、アプリケーション共通マスタでは新たな会社組織構成のバージョンが作成されます。
バージョンが増えることで、パッチ5では全バージョンで整合性チェックを行っていたため、インポートする度にバージョンが増え、インポートの回数を重ねる度にインポート処理が遅くなっていきます。。
パッチ6では、[終了日移動処理]と[所属同期処理期間]の改善を行いました。この度の結果は、この改善による効果と分析しております。スナップショットで過去のデータをインポートするようなケースは稀で、未来日のデータをインポートするケースがほとんどと想定されます。そのため、お客様運用環境にて同様の改善効果が期待できると考えております。
ただ、お客様環境の登録されているデータ量や、インポートするデータの内容やインポートするデータ量により、この効果には違いがあると考えられます。
できればパッチ6適用後のインポート処理のお客様環境での改善結果を是非コメントいただきたいです。
「今まで??時間かかったのが、??時間になりました!」という声をお待ちしております。
逆に「効果がありませんでした。。」というお話もあればデータ量やインポートのデータ内容について教えてください。
皆様のコメントをお待ちしております。
ちなみに、今回のパフォーマンス改善では、IM共通マスタのAPI内部で実装された同期処理の1つ1つはすべて必要な処理で、仕組み自体を変えることはできません。。。
そこで、少しでも省ける処理、またはまとめられる処理はないかと約1ヶ月にわたり徹底的に調査し、効果の高そうな3箇所を対応しました。なかなか大変でした。。。。。