システムのリソース管理を目的とし、リソースを効率的に利用することを目指す。
キャパシティプランニングは概算と詳細を使い分ける。不必要に詳細に踏み込まないようにし、必要な時に適切な詳細を用意する。
レスポンスタイム、スループット、同時接続数、負荷性能など。
アプリケーションを構成する各アーキテクチャの要素(Webサーバー、DB、ストレージなど)の負荷特性を計測し、パフォーマンス要件と比較する。
過去の実績を元に、予算やスケジュールと照らし合わせて、何がどれくらいいつ必要になるかを判断する。
アーキテクチャの変更・追加・削除などキャパシティプランに合わせてアーキテクチャを調整する。
システムのメトリクスはアプリケーション固有の性質(ユーザーがどのように機能を使っているか、最も利用されるのいつか?など)と照らし合わせる。
アプリケーションの性能傾向を深く観察することができるため、どこのキャパシティを優先的に考えるべきか検討しやすくなる。
また、ビジネス要件やビジネス指標と関連付けやすくなるため、技術投資への説得力が増す。
パフォーマンスチューニングは、既存システムのパフォーマンスを最適化することが目的である。
キャパシティプランニングは、既存システムのパフォーマンスを基準とし、システムに必要となるものと必要になる時期を予測する。何を最適化するかは考慮せずに行う。
キャパシティプランニングでは、負荷試験のようなベンチマークよる観察よりも、実際の利用状況に基づく観察を優先させる。
キャパシティプランニングおいて定めるべき目標は次のような項目となる。
安全率は、キャパシティプランニングで予測したキャパシティの不確実性に対するリスクヘッジとして乗せるバッファ分の割合のことである。
過去のシステムの性能傾向やアプリケーションの性質に基づいて妥当な割合を決める。
計測による「観察者効果」はキャパシティプランニングおける必要なコストとして受け入れるのが良い。
関連書籍