クラウドコンピュート

スケールアップとスケールアウト すけーるあっぷとすけーるあうと

スケールアップスケールアウト垂直スケーリング水平スケーリング拡張性パフォーマンス
スケールアップとスケールアウトについて教えて

簡単に言うとこんな感じ!

スケールアップは「1台のサーバーを強化する」こと、スケールアウトは「サーバーの台数を増やす」こと。クラウドではスケールアウトを前提に設計するのが基本で、「もっと大きい1台」より「普通の台数」が鉄則だよ。


スケールアップとスケールアウトとは

スケールアップ(Scale Up)とは、既存のサーバーのCPU・メモリ・ストレージなどのリソースを増強することで処理能力を高める手法です。「垂直スケーリング(Vertical Scaling)」とも呼ばれます。たとえば、EC2インスタンスをt3.microからm7i.4xlargeに変更することがこれに当たります。

スケールアウト(Scale Out)とは、同じ処理を行うサーバーの台数を増やすことで処理能力を高める手法です。「水平スケーリング(Horizontal Scaling)」とも呼ばれます。Webサーバーを1台から10台に増やすイメージです。

クラウドネイティブな設計では、スケールアウトを前提にしたステートレスアーキテクチャが推奨されます。どのインスタンスが処理してもOKな設計にしておくことで、インスタンスを何台でも並べられるようになります。


比較表

項目スケールアップスケールアウト
別名垂直スケーリング水平スケーリング
やること1台を強化(サイズ変更)台数を増やす
停止の要否一般的に停止が必要停止不要
上限ハードウェアの最大スペックで頭打ち理論上は無制限
コスト特性大きいほど単価が高い傾向台数×単価で線形増加
適したワークロードDB(ステートフル)、レガシーアプリWebサーバー、APIサーバー
設計の複雑さ低い高い(ロードバランサー必要)

スケールアウトを実現するための設計要件

要件内容
ステートレス設計セッション情報をサーバーに持たない(外部DBやキャッシュに保存)
共有ストレージファイルを外部ストレージ(S3等)に保存
ロードバランサー複数台に均等にリクエストを振り分け
ヘルスチェック異常なインスタンスを自動排除

歴史と背景

1990〜2000年代のオンプレミス環境では、スケールアップが主流でした。「モジュラー型のサーバーにCPUボードやメモリを追加する」ことが一般的な性能増強手段でしたが、ハードウェアの上限に達すると手詰まりになる問題がありました。

2000年代にGoogleが大量の安価なサーバーを並列で動かすことで超大規模な検索サービスを実現し、「スケールアップではなくスケールアウト」という考え方が広まりました。クラウドの登場でスケールアウトがオートスケーリングと組み合わさり、「負荷に応じて自動で台数を変える」動的なインフラが標準になっています。


スケールアップ vs スケールアウトの概念図

スケールアップ vs スケールアウト サーバー1台 (小) サーバー1台 (大型に変更) スケールアップ (垂直スケーリング) 1台 3台 に増台 スケールアウト (水平スケーリング)

関連する規格・RFC

スケーリングに特定の規格はありませんが、以下の概念が関連します。

資料内容
The Twelve-Factor Appスケールアウト前提のアプリ設計原則
CAP定理分散システム設計の理論的制約

関連用語