第15章: キャパシティ
すべてのシステムには限界があります。サーバーが処理できるリクエスト数には上限があります。ディスクが保存できるバイト数には上限があります。ネットワークリンクが運べる帯域幅には上限があります。キャパシティとは、これらの限界の測定と、システムがワークロードに対応するのに十分なリソースを確保する実践です。
キャパシティはスタックのあらゆるレベルで測定されます。ハードウェアレベル:CPUコア、メモリギガバイト、ディスクIOPS、ネットワーク帯域幅。ソフトウェアレベル:毎秒リクエスト数、同時接続数、キュー深度、キャッシュヒット率。サービスレベル:提供可能なユーザー数、保存可能なデータ量、達成可能なレイテンシー。
負荷とパフォーマンスの関係は線形であることはまれです。1秒あたり1,000リクエストを10msレイテンシーで処理するサーバーは、2,000で15ms、3,000で50ms、3,500で完全に崩壊するかもしれません。これらの非線形な関係を理解すること——負荷テスト、モデリング、経験を通じて——はキャパシティプランニングに不可欠です。
キャパシティ管理は継続的なプロセスです。トラフィックが成長し、新機能が追加され、使用パターンが変化する中で、システムのキャパシティ要件は進化します。モニタリングサービスは時間の経過に伴うキャパシティ使用率を追跡するために必要なデータを提供し、コンフィギュレーションサービスはキャパシティパラメータ(接続プールサイズやキャッシュ制限など)を再デプロイなしに調整することを可能にします。