キャパシティ・プランニングの作業手順は,3つのフェーズに分かれる。(1)構築対象のシステムが実行する処理の種類や量である「ワークロード(負荷)情報」の収集と,それを基にした性能要件の決定,(2)性能要件からリソースのスペックを見積もる「サイジング」,(3)サイジング結果を評価して精度を高めていく「評価・チューニング」である。

 トランザクション処理とターンアラウンドタイムに関する情報を収集してシステムに必要な性能を見積もり,サーバーやストレージなどのスペックを決定する「キャパシティ・プランニング」の進め方を見ていこう。

 図1には,キャパシティ・プランニングの基本的な作業手順を示した。作業手順は,大まかに次の3つのフェーズに分かれる。

 (1)構築対象のシステムが実行する処理の種類や量である「ワークロード(負荷)情報」の収集と,それを基にした性能要件の決定,(2)性能要件からリソースのスペックを見積もる「サイジング」,(3)サイジング結果を評価して精度を高めていく「評価・チューニング」である。

図1 キャパシティ・プランニングの基本的な手順
図1●キャパシティ・プランニングの基本的な手順
キャパシティ・プランニングは,構築対象のシステムが処理する負荷の種類や量を明らかにする「ワークロード情報収集」,基本的なシステム構成を決める「サイジング」,サイジング結果を評価して精度を高めていく「評価・チューニング」という3段階の手順に沿って進める
[画像のクリックで拡大表示]

 実際のシステム開発の現場では,時間やコストの制約から,かならずしもこの手順に沿ってきちんとキャパシティ・プランニングが行われるわけではない。しかし,システムの複雑化に伴って性能に関するトラブルが多発しているだけに,本来あるべき手順を理解しておくことは重要だ。

業務から性能要件を決める

 最初のフェーズでは,ユーザー企業の情報システム担当者や利用部門などへのヒアリングを基に,システムにかかる負荷と性能要件を洗い出す。具体的には業務の種類や処理の量,実現すべき処理時間などである。

 トランザクション処理ならば,処理ピーク時や通常時の毎時/毎分/毎秒当たりの処理件数や1件当たりのデータサイズ,バッチ処理ならば日次/週次/月次当たりの処理件数,それぞれの処理における許容時間,1件当たりのデータサイズなどが必要不可欠な情報となる。例えばECサイトで顧客が商品を注文するトランザクション処理ならば,「トランザクション1件当たりのターンアラウンドタイムを2秒以内に押さえる」,「営業時間中には,毎秒500件のトランザクションを処理する」といった具合だ。

 ただし,すべての業務について負荷情報を収集する必要はない。「業務の中には,営業時間中にはめったに実行されなかったり,処理時間が問題にならないものがある」(クロスリンク・コンサルティングの野瀬純郎取締役)。そこで,重要度や実行頻度などを基にして,いくつかの業務*1を選び出し,その負荷を検討する。

基本は静的積算

 性能要件を基に,システムの具体的な構成を決定するのが,第2フェーズの「サイジング」と,第3フェーズの「評価・チューニング」である。

 実際はこれらのフェーズは不可分であり,一体のものとして進められることが多い。サーバーやストレージのスペックをサイジングによって見積もったとしても,それが本当に十分な性能を発揮できるかどうかは,本番環境で稼働させてみないと分からないからだ。そこで,サイジングと評価・チューニングを繰り返しながら,可能な限り見積もりの精度を高めていく。

 通常はワークロード情報と性能要件が出揃ったら,過去に手がけた同規模・同種業務のシステムの構成や,業界標準のベンチマーク結果,ITベンダーが公表している性能評価レポートなどを参考にして,“仮の”システム構成*2を決める。「仮」と言っても,この時点でできるだけ高い精度が求められることは言うまでもない。

 その際に,TPCやSPEC*3など,業界標準のベンチマーク指標やITベンダーの公表値は,有用な情報源になる。ただし,ベンチマークで定義されている処理内容を調べて,できる限り顧客の業務特性に近いベンチマーク指標を選ぶことが大切だ。

図2 静的積算によるサイジングの例(作成協力:アイ・アイ・エム)
図2●静的積算によるサイジングの例(作成協力:アイ・アイ・エム)
仮のシステムのデータベース・サーバーが性能要件を満たしているかを,静的積算によって検証した