キャパシティプランニング
🐱 この章の目次
キャパシティプランニングとは
キャパシティプランニング(capacity planning) は、将来のワークロードに対して十分なリソースを確保するための計画プロセスです。 『インフラ大全』第 3 章では、需要予測→現状分析→調達計画→検証のサイクルとして体系化されています。 過剰プロビジョニングはコスト増、過少プロビジョニングは障害を招くため、適切なバランスが求められます。
負荷試験で限界を知る
負荷試験(load testing) は、システムが処理できるリクエスト数やスループットの上限を実測する手法です。 段階的にリクエストレートを上げ、レイテンシやエラー率が急増するポイント(膝の点)を特定します。 代表的なツールとして k6、Locust、wrk などがあります。
# k6 による負荷試験の例
k6 run --vus 50 --duration 60s load-test.js
負荷試験の結果から、1 インスタンスあたりの処理能力を見積もり、必要台数を算出します。
垂直スケーリング vs 水平スケーリング
垂直スケーリング(vertical scaling) は、単一ノードのスペックを上げる方法です。 実装が単純ですが、物理的な上限があり、単一障害点になりやすい欠点があります。
水平スケーリング(horizontal scaling) は、同じ役割のノードを増やす方法です。 理論上は無限にスケールできますが、状態の共有やデータの一貫性に課題が生じます。
| 観点 | 垂直 | 水平 |
|---|---|---|
| 上限 | ハードウェアの物理限界 | 理論上なし |
| 複雑さ | 低い | 高い(状態管理) |
| コスト曲線 | 指数的に高騰 | ほぼ線形 |
| 可用性 | SPOF リスク | 冗長性あり |
実務ではまず垂直スケーリングで対応し、限界が見えた段階で水平スケーリングへ移行する戦略が一般的です。
オートスケーリングパターン
オートスケーリング(auto-scaling) は、メトリクス(CPU 使用率、リクエスト数など)に基づいてインスタンス数を自動調整する仕組みです。 リアクティブ型はメトリクスの閾値超過で発火し、プレディクティブ型は過去の傾向から事前にスケールアウトします。 スケールイン時にはコネクションドレインを行い、処理中のリクエストを安全に完了させる必要があります。
参考文献
- 『インフラ大全』第 3 章 — キャパシティプランニングのプロセス