第7章 · システムアーキテクチャ·v1.0.0·更新 2026/7/7·読了目安 約12分
変更要約: 初版(主題2.13・副主題2.13.1〜2.13.4に対応)
7.2キャパシティプランニングとスケーラビリティ
この節の要点
将来の負荷増大に備えるキャパシティプランの考え方と、負荷への対応方式であるスケールアップ・ダウン(垂直)とスケールアウト・イン(水平)の違いを学びます。スケールアウトを機能させる前提となるステートレス構成(DB・セッションの外部化)、構成管理ツールや仮想マシンイメージによるマシン再構成の自動化、ロードバランサ・DNSラウンドロビンによる分散を押さえます。
サービスの利用者が増えれば、いずれ現在のサーバー構成では処理しきれなくなります。あわてて増強するのではなく、将来の負荷を見積もり、いつ・どう拡張するかを事前に計画しておくのがキャパシティプランニングです。拡張の方向性には大きく2通りがあり、どちらを選ぶかでシステム設計そのものが変わります。
7.2.1スケールアップ/ダウンとスケールアウト/イン
- スケールアップ(垂直拡張)=1台のマシンの性能を強化する(CPU・メモリ・ストレージの増強)。逆に減らすのがスケールダウン。実装が単純な一方、性能には物理的な上限があり、増強中はダウンタイムを伴うことが多い。
- スケールアウト(水平拡張)=同種のマシンを台数で増やすことで処理能力を上げる。逆に減らすのがスケールイン。理論上の上限が高く、1台の追加・削除がサービス全体を止めないのが利点だが、後述のステートレス構成が前提になる。
7.2.2ステートレス構成と自動化
- ステートレス構成=サーバー自身が状態(セッション情報など)を保持しない設計。セッション情報は特定サーバーに固定せず外部(共有ストア)に置き、DBも各Webサーバーから共有アクセスできるよう分離しておく。これによりどのリクエストがどのサーバーに届いても同じ結果が返り、サーバーの追加・削除(スケールアウト・イン)が自由になる。
- 新規マシンを迅速かつ均一に用意する仕組みとして、構成管理ツール(Ansible等・設定を自動で適用)や仮想マシンイメージ(あらかじめ必要なソフトを組み込んだテンプレート)を使い、マシン再構成の手作業を排除する。台数を増減しても構成のばらつき(構成ドリフト)が起きないことが水平拡張の実務上の生命線となる。
- リクエストを複数台へ振り分ける手段として、ロードバランサ(アプリ層で分散・死活監視や重み付けが可能)とDNSラウンドロビン(DNSが同一名に複数IPを順番に返す・単純だが死活監視ができず障害ノードへも振り続けるおそれ)がある。

