キャパシティプランニングについて

システムアーキテクチャ

キャパシティプランニングの目的

システムのリソース管理を目的とし、リソースを効率的に利用することを目指す。

キャパシティプランニングのプロセス

キャパシティプランニングは概算と詳細を使い分ける。不必要に詳細に踏み込まないようにし、必要な時に適切な詳細を用意する。

  1. アプリケーションのパフォーマンス要件を定義する

レスポンスタイム、スループット、同時接続数、負荷性能など。

  1. 現在のインフラの稼働状況把握

アプリケーションを構成する各アーキテクチャの要素(Webサーバー、DB、ストレージなど)の負荷特性を計測し、パフォーマンス要件と比較する。

  1. 許容できるパフォーマンスの維持のために、将来的に必要となるものを考える

過去の実績を元に、予算やスケジュールと照らし合わせて、何がどれくらいいつ必要になるかを判断する。

  1. サイジング

アーキテクチャの変更・追加・削除などキャパシティプランに合わせてアーキテクチャを調整する。

計測

システムのメトリクスはアプリケーション固有の性質(ユーザーがどのように機能を使っているか、最も利用されるのいつか?など)と照らし合わせる。

アプリケーションの性能傾向を深く観察することができるため、どこのキャパシティを優先的に考えるべきか検討しやすくなる。

また、ビジネス要件やビジネス指標と関連付けやすくなるため、技術投資への説得力が増す。

パフォーマンスチューニングとキャパシティプランニング

パフォーマンスチューニングは、既存システムのパフォーマンスを最適化することが目的である。

キャパシティプランニングは、既存システムのパフォーマンスを基準とし、システムに必要となるものと必要になる時期を予測する。何を最適化するかは考慮せずに行う。

キャパシティプランニングでは、負荷試験のようなベンチマークよる観察よりも、実際の利用状況に基づく観察を優先させる。

キャパシティプランニングおける目標設定

キャパシティプランニングおいて定めるべき目標は次のような項目となる。

  • パフォーマンス
    • モニタリングに基づく性能要件
      • 将来必要となりそうな性能を予測
    • SLA
      • Webアプリケーションでは主に可用性とパフォーマンスを対象した目標値
    • ビジネス要件
    • ユーザーが期待する性能
  • キャパシティ
    • システム指標
    • リソース上限

安全率

安全率は、キャパシティプランニングで予測したキャパシティの不確実性に対するリスクヘッジとして乗せるバッファ分の割合のことである。

過去のシステムの性能傾向やアプリケーションの性質に基づいて妥当な割合を決める。

計測ツールの要件

  • 一定期間データの保存ができること
  • 指標をカスマイズできること
  • 任意のソースから指標を取得し、比較できること
  • 指標のインポート・エクスポートができること

計測による「観察者効果」はキャパシティプランニングおける必要なコストとして受け入れるのが良い。

参考