概要
スケーラビリティの計測方法について調べたのでまとめる。
スケーラビリティの基本理解
- スケーラビリティとは、ワークロードの増加に対してシステムがどのように対応できるかに関係する品質特性である。
- スケーラビリティは、単なるリソース追加ではなく、**効率性(Efficiency)**に直接的な影響を与える。
- 重要なのは、CPU・メモリ・ストレージ・ネットワークなどのリソースを増減させたとき、システムがどのようにワークロード(処理能力・応答性)を維持・拡大できるかである。
- スケーラビリティは、パフォーマンス、コスト、保守性とも密接に結びついており、アーキテクチャ設計時の中核的関心事となる。
主要指標(メトリクス)
- スループット(Throughput)
- 単位時間あたりに処理できるリクエスト数(例:RPS, TPS)
- 例:100 インスタンスで 10,000 RPS ⇒ 1インスタンスあたり 100 RPS
- レイテンシ(Latency)
- p50, p95, p99 などの応答時間
- どれだけ低遅延を維持しつつスループットを増やせるか
- 効率(Efficiency)
- 追加したリソースあたりの性能向上率
- 速度向上率(Speedup) $S(n) = \frac{T(1)}{T(n)}$
- 効率(E) $E(n) = \frac{S(n)}{n}$
- コスト・パフォーマンス
- 1リクエストあたりのコスト($/RPS)
- または、スループット単価(RPS/$)
- 弾力性(Elasticity)
- 負荷変動に対するスケールアウト/インの速度や安定性
- オートスケーリングの起動時間や振動の頻度
定量評価の手順
- ベースライン計測
- 最小構成(例:インスタンス 1 台)でスループット・レイテンシを取得
- リソース追加実験
- インスタンス数を段階的に増加(1→2→4→8…)させ、各ステップでベンチマーク
- 速度向上率・効率の算出
- 各 $n$ における $S(n), E(n)$ を計算
- ボトルネック分析
- 資源利用率(CPU, メモリ, DB コネクションなど)を観察
- シナリオ別評価
- 読み取り/書き込み/混合負荷でテスト実施
- コスト試算
- 実運用のコストと性能を照合し、最適稼働点を決定
具体的な定量化例
| インスタンス数 $n$ | スループット RPS $R(n)$ | p95 レイテンシ (ms) | 速度向上率 $S(n)$ | 効率 $E(n)$ |
|---|---|---|---|---|
| 1 | 500 | 120 | 1.0 | 1.00 |
| 2 | 1000 | 125 | 2.0 | 1.00 |
| 4 | 1900 | 140 | 3.8 | 0.95 |
| 8 | 3500 | 180 | 7.0 | 0.88 |
数理モデルの活用
数理モデルは、スケーラビリティの理論的な限界や期待値を明確にするために役立つものである。
- 理想的なスケールの限界を理解できる
- Amdahlの法則により、並列化できない処理がある場合の最大スピードアップを定量的に予測することが可能である。
- 現実とのギャップを見つけられる
- 実測値と理論値を比較することで、効率が低下している原因(ボトルネック)を特定することができる。
- リソース追加の費用対効果を議論できる
- Gustafsonの法則により、問題サイズの拡大に応じた効率の向上を前提とした設計評価が可能となる。
- 無制限なスケーリングの限界を説明できる
- リソースをいくら増やしても効果が頭打ちになる点を、数式により裏付けて説明することができる。
以下に代表的なモデルを示す。
-
Amdahl's Law
$$ S_{max} = \frac{1}{\alpha + \frac{1 - \alpha}{n}} $$
(α は並列化できない部分)
-
Gustafson's Law 問題サイズが拡大するほど効率が改善されるモデル
運用・保守性の観点(People & Maintainability)
- 保守人員の必要性
- 運用作業負荷、スキルセット、オートメーション化の有無
- 障害対応フロー
- アラート定義、エスカレーションルート、SLO 準拠状況
- CI/CD とリリースの運用負荷
- デプロイ自動化、安全なリリース戦略の実施可否
- ログ・モニタリングの整備
- 可観測性(Observability)の水準、月次レビューのしやすさ
ストレージ/コスト効率(Storage & Cost Efficiency)
- ストレージ構成とスケーラビリティ
- キャッシュ、オブジェクト/ブロックストレージの最適化
- ストレージコストの最適化
- 階層型ストレージ、ライフサイクルルールの適用
- コストの観測性と最適化
- コスト単価($/RPS)、アイドルコスト比率の監視
- 費用対効果分析(ROI)
- 追加性能あたりの追加コストを可視化
補足評価指標
| 指標 | 意味 | 補足 |
|---|---|---|
| 保守工数(人日/月) | 運用にかかる人手 | アラート・構成変更含む |
| コスト効率 ($ / RPS) | 処理単価 | 高負荷時とアイドル時を比較 |
| アイドルリソース率 | 未使用リソースの割合 | min_instances 設定時に注意 |
| ストレージ単価 ($ / GB / 月) | 保存コスト | 圧縮、保存期限の活用 |
まとめ
- ベンチマークを通じてスループット・レイテンシを取得
- リソース追加による性能向上と効率を定量化
- スケールカーブからボトルネックを特定
- 保守性やコスト効率を評価指標に加えて、現実的な拡張戦略を立てる