データ連携基盤をサイジングするときのポイントをまとめる。
超概要
1.目標設定
最も重たいかつ重要な処理について目標の処理時間を設定する。
2.ボトルネックの特定
重要な処理がIOボトルネックかCPUボトルネックか評価する。
3. サイジング
ボトルネックについて目標時間をクリアできるようにハードウェアをサイジングする。拡張性も考慮する。
4. どうしても止む得ない場合はチューニングを考慮したサイジングを検討する。
チューニングはシステムテストや本番運用後にどうしても必要な場合に実施するべきで、サイジング時点ではシンプルな構成を前提とするべきである。
概要
1.目標設定
競合他社よりも少しでも早く優位に営業活動を促進したい等のニーズから処理時間に制限が設けられる。また、重要度によっては障害発生時のリトライも考慮して目標時間を設定する。将来の利用増加も考慮したデータ量も確認する。
2.ボトルネックの特定
最も難しいフェーズ。入力、加工、出力のどこがボトルネックか?それはIO、CPUのどちらがボトルネックか調査する。入力、出力は外部のシステムで、処理性能を調査することが困難な場合も多い。
入力、出力はほとんどのケースではIOボトルネック。”入力元DB/出力先DBのシーケンシャルIO性能=処理時間”となることが多い。DBでソートが発生する場合はソートの処理時間も追加される。
データ連携基盤(ETL)でソートする場合はデータ連携基盤のIOボトルネックとなる可能性が高い。データ連携基盤でノーマライズ処理や複雑なビジネスロックを行う場合はCPUボトルネックとなるケースも有り得るが稀である。
3. サイジング
まずは、ハードウェア製品デフォルト構成をベースとする。クラウドの場合は仮想サーバーの標準構成をベースとする。上記で特定したボトルネックに合わせて増設する。CPUならコア数増加かグレードアップ、IOならディスク本数増加かディスクのグレードアップを検討する。
CPUは並列処理ができる場合のみコア数追加が有効である。IOは本数増加でIO性能も向上するが、必要以上にスペースを確保することになりコスト増となるのでグレードアップでは不足している場合に、ディスク本数増加で対応する。
詳細
本ブログのカテゴリ:サイジングの各個別テーマを参照