ITの教科書検索
入門読了 約8分

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

スケールアップはサーバ1台を強くし、スケールアウトは台数を増やして処理能力を上げます。故障したときの止まり方、増やせる上限、必要な台数の求め方まで。

目次
  1. スケールアップとスケールアウトの違い
  2. スケールアップとは
  3. スケールアウトとは
  4. 同じ処理量を2通りの構成で比べる
  5. メリット・デメリットを比べる
  6. 台数・倍率を計算する
  7. Auto Scalingとの関係
  8. 練習問題

スケールアップとスケールアウトは、増やし方の方向が違う

アクセスが増えてサーバの処理が追いつかなくなったとき、増やし方は2通りあります。サーバ1台の性能を上げるのがスケールアップ、サーバの台数を増やすのがスケールアウトです。

どちらを選ぶかで、1台が故障したときに全体が止まるかどうかと、どこまで増やせるかが変わります。スケールアップは垂直スケーリング、スケールアウトは水平スケーリングとも呼びます。

スケールアップとは、サーバ1台の性能を上げる方法

スケールアップとは、いま使っているサーバ1台のCPUやメモリを増やし、1台あたりの処理能力を高める方法です。EC2のインスタンスタイプを、より性能の高いものに変えるのがスケールアップの例です。

性能を上げられる上限は、1台に載せられるCPUやメモリの量で決まります。クラウドでは、選べる最大のインスタンスタイプが上限です。サーバは1台のままなので、設定の変更先はいつも1か所です。

ただし、1台の構成を変えるため、変更の間はサーバを使えなくなることが多くあります。また、そのサーバが故障すると、処理能力がすべて止まります。

スケールアウトとは、サーバの台数を増やす方法

スケールアウトとは、サーバの台数を増やして処理能力を増やす方法です。1台あたりの性能は変えず、同じ性能のサーバを並べます。リクエストは、ロードバランサで複数台に振り分けます。

台数を増やすことで、1台の性能の上限を超えて処理能力を増やせます。1つの計算を多くの台数に分けると、計算を配る手間もかかります。その影響は、グリッドコンピューティングの記事で確かめられます。複数台に分かれているため、1台が故障しても残りの台数で処理を続けられます。ただし、処理できる量は故障した1台の分だけ減ります。

台数が増えると、どのサーバにリクエストを振り分けるかを管理する手間が増えます。サーバごとに違う情報を持たないような設計も必要になります。台数の調整を自動で行う仕組みが、Auto Scalingです。AWSでは、振り分けはELBが受け持ちます。

性能を下げる方向はスケールダウンと呼びます。台数を減らす方向はスケールインと呼びます。

同じ処理量を2通りの構成で比べる

スケールアップとスケールアウトの違いは、同じ処理量を目指す場合で比べるとはっきりします。1秒400件まで処理できるようにする例で比べます。

いまのサーバ1台1秒100件まで処理性能を上げる台数を増やすスケールアップ(垂直スケーリング)強いサーバ1台1秒400件まで処理×故障すると、処理能力がすべて止まるスケールアウト(水平スケーリング)振り分け100件/秒100件/秒100件/秒×100件/秒1台が故障しても、残り3台で処理を続けられるいまのサーバ1台1秒100件まで処理性能を上げる台数を増やすスケールアップ(垂直スケーリング)強いサーバ1台1秒400件まで処理×故障すると、処理能力がすべて止まるスケールアウト(水平スケーリング)振り分け100件/秒100件/秒100件/秒×100件/秒1台が故障しても、残り3台で処理を続けられる
どちらも1秒400件まで処理できる構成です。スケールアップは強いサーバが1台だけなので、そのサーバが故障すると処理能力がすべて止まります。スケールアウトは4台に分かれているため、1台が故障しても残り3台で処理を続けられます。そのとき処理できる量は1秒300件に減ります。

スケールアップは、いまのサーバを強いサーバ1台に置き換えます。スケールアウトは、同じ性能のサーバを4台に増やし、振り分けの仕組みで束ねます。

強いサーバ1台は、故障すると処理能力がすべて止まります。4台に分かれたサーバは、1台が故障しても残り3台で処理を続けられます。このとき処理できる量は、1秒300件に減ります。1か所の故障が全体の停止につながる箇所を、単一障害点と呼びます。サーバが単一障害点になるかどうかが、2つの構成の違いです。

メリット・デメリットを比べる

スケールアップとスケールアウトは、単一障害点・拡張の上限・変更中の稼働・運用の複雑さで違いがあります。

スケールアップとスケールアウトの、単一障害点・拡張の上限・増やす単位・変更中の稼働・運用の複雑さの違い
観点スケールアップスケールアウト
単一障害点サーバが1台のため起きる複数台に分かれるため起きにくい
拡張の上限1台の最大スペックで止まる台数を増やせる範囲で拡張できる
増やす単位製品やインスタンスタイプの段階ごと1台分ずつ
変更中の稼働使えなくなることが多い既存の台は動き続けられる
運用の複雑さ変更先が1台で済む振り分けや台ごとの設計の手間が増える

スケールアウトで処理が速くなるのは、増やした部分だけです。たとえば裏側のデータベースが詰まっている場合、Webサーバを増やしても処理は速くなりません。データなどの状態を持つ部分は、こうした詰まりの原因になりがちです。

単一障害点を避けたい場合や、将来さらに増やす可能性がある場合は、スケールアウトが向きます。変更の手間を抑えたい小規模なシステムでは、スケールアップで十分なこともあります。

増やし方の違いが費用の総額にどう表れるかは、TCOの考え方で比べられます。動かし始めた後にサイズや台数を見直して費用を抑える取り組みは、FinOpsの記事で説明しています。

必要な処理量から、台数・倍率を計算する

必要な処理量を決めると、スケールアップで性能を何倍にすればよいか、スケールアウトで何台に増やせばよいかを計算できます。下の図で、処理量ごとに両方の計算結果を比べられます。ここでの処理量は1秒あたりの件数で、システムのスループットにあたります。

いまのサーバ1台:1秒 100 件まで処理できる(説明用の例)
スケールアップ(1台のまま)性能を3倍以上にする1台で1秒300件以上を処理できるサーバに替える
スケールアウト(台数を増やす)3台に増やす1台100件のサーバ3台で、ちょうど1秒300件まで処理できる

スケールアウトは1台分ずつ増えるため、今回はちょうど必要な分だけ増やせます。スケールアップも、選べる性能は製品やインスタンスタイプの段階で決まるため、ちょうど3倍の1台があるとは限りません。1台の故障で全体が止まるのはスケールアップのほうで、スケールアウトは残りの台で処理を続けられます。

Auto Scalingは、スケールアウトを自動化する仕組み

Auto Scalingは、スケールアウトとスケールインを自動で行う仕組みです。負荷が増えるとサーバを自動で増やし、負荷が減ると自動で減らします。いつ何台に増減させるかの設定は、ELBとAuto Scalingの記事で説明しています。サーバではなくコンテナを同じイメージから増やす方法は、コンテナの記事にあります。

参考にした資料

練習問題(全5問)

Q1スケールアップとは、どういう方法?
Q2スケールアウトとは、どういう方法?
Q3単一障害点(1台の故障が全体の停止につながること)が起きやすいのはどちら?
Q41台で1秒100件処理できるサーバを、1秒450件まで処理できるようにスケールアウトする場合、サーバは何台必要?
Q5スケールアウトの逆に、サーバの台数を減らす方向を何と呼ぶ?

選んでから「採点する」を押すと、解説つきで答え合わせができます。

関連記事

クラウドの記事を続けて読む

クラウド 全36本中25本目