“スケールアウト”と“スケールアップ”の違いは?

(イラスト・アニメーション:岸本 ムサシ)

  今回の回答者:
黒河内 倫
楽天
DU グループインフラ構築・運用課
ネットワーク構築・運用グループ
マネージャー

 サーバーやネットワークといったインフラの性能を上げる方法の一つに「スケールアウト」があります。また、似た言葉で「スケールアップ」もあります。この二つの違いを、Webサービスを提供するサーバーを例に説明しましょう。

 スケールアップは、サーバーのCPUやメモリーといったハードウエアを高性能なものにして処理性能を上げる方法。一方のスケールアウトは、サーバーの数を増やすことで性能を上げる方法です。後者の場合、1台1台が高性能でなくても、大量のサーバーで同じWebサービスを動かせば処理性能を上げられます。スケールアップより構築コストが安く済む、1台くらいサーバーが停止してもWebサービスを提供し続けられる、というメリットがあります。ここ数年、インフラ構築ではスケールアウトが注目されてきています。

 二つの方法は、一般的にサーバーの種類で使い分けられます。通常、Webサーバーはスケールアウトで、データベース(DB)サーバーはスケールアップで処理性能を上げます。DBでスケールアウトを使わない理由は、分散したサーバーで処理を継続するのが難しいためです。

 しかし近年はDBの機能が向上し、スケールアウトでも処理がしやすくなっています。そこで最近では、各種サーバーでスケールアウトとスケールアップの二つを同時に用いることもあります。その鍵となるのは“仮想化技術”です。スケールアップしたサーバー上で、仮想サーバーをいくつも動かすのです。

 仮想サーバーとは、サーバーの中でソフトウエア的に作ったサーバーのことです。高性能なサーバーならば、たくさんの仮想サーバーを作って動かせます。仮想サーバーは、サーバー管理者が簡単な設定をするだけで自由に数を増減できます。この数を増やしたときが、スケールアウトというわけです。スケールアップしたサーバー内部で仮想的なサーバーをスケールアウトする──これが最近のトレンドです。