サーバーのスケールアウトとスケールアップの違いとは何か?AWSの事例を含めて解説

2020年9月21日

サーバーのスケールアウトとスケールアップの概要

サーバーの増強を考える際、スケールアウトスケールアップという2つの手段があります。
これらの違いをまとめると以下のようになります。

  • スケールアウト:サーバーの台数を増やす
  • スケールアップ:サーバーの性能や信頼性を高める

スケールアウトはサーバーの台数を増やすことによって、サーバーの負荷を分散させたり、処理能力を向上させたりします。
一方で、スケールアップはサーバーの性能を上げることにより、処理能力を向上させる方法です。具体的にはCPUのコア数やメモリ、ディスクの容量を増やしていきます。

今回は、このサーバーのスケールアウトとスケールアップの違いについて解説していきます。

スケールアウトとスケールアップのどちらを選ぶべきか

CPU、メモリ、ディスクについておさらい

サーバーの基本情報

スケールアウトとスケールアップの違いについて話していく前に、サーバーの基礎についておさらいしておきましょう。
サーバーについて考える際、重要なのはCPU・メモリ・ディスクの3点です。
よく使われる例えですが、サーバーを人の仕事場で例えると、CPUは人間の賢さ、メモリは机の広さ、ディスクは書類をしまう引き出しの広さ(容量)に当たります。

何らかのタスクを人に依頼する場合、つまりその人の賢さが低ければ、なかなかタスクが終わらなかったり、手に余ったりしてしまいます。
机があまり広くなければ、多くのタスクをお願いした時に、机の上が作業の資料であふれかえってとんでもないことになってしまいます。
そして、机の引き出しの容量がなければ、あまり多くの資料を保管しておくことはできません。

これと同様に、CPUが低ければそのサーバーのタスクの処理能力が低くなってしまいますし、メモリが低ければ多くのタスクを一気に依頼した場合に機能が停止してしまうこともあります。
そしてディスクの容量が小さければ多くのデータが保存できず、無理にデータを入れようとすると機能が停止してしまう恐れがあります。

サーバーの話はなれないと難しいですが、このCPU・メモリ・ディスクの役回りを覚えておけば、だいたいの問題を解決することができます
この話を前提に、スケールアウトとスケールアップについてお話ししていきましょう。

スケールアウトはスケールアップを賄う(?)

多くの場合、 スケールアウトとスケールアップのどちらの手段を採るかは、抱えているサーバーの課題によって変わってきます。 しかし多くの場合、スケールアウトはスケールアップで期待される効果を得られるため、費用面を度外視するのであればスケールアウトはスケールアップを賄います。

これは先ほどの例を思い返していただければわかりやすいのですが、作業する人間が2人になれば、タスクをこなす速度は2倍になりますし、作業するスペースも広くなり、保存できる資料の量も増加し、負担も分散します(あくまで同質の人間であることが前提ですが……)。

しかし、人を1人雇うとなると、かなりのコストアップになることも想像に難くありません。
そのため、作業する人の力量が足りなければ訓練し、机が狭ければ机を拡張し、資料を保存する場所が足りなければ別途書類棚を買った方が安価に済みます。

同様に、サーバーもスケールアウトし、台数を増やしたらだいたいの問題が解決することはわかっているのですが、コストの面からスケールアップし、部分的に性能を上げることがよくあります。

目的によって採るべき手段は異なる

このように、費用のことさえ考えなければ、スケールアウトでもスケールアップでもどちらでもよいように思われます。
しかし、スケールアウトでしか対応できないことがあります。それが負荷分散です。

これも人の例で考えてみればわかりやすいのですが、大量のタスクが一気に個人に降りかかったりすると、その作業者はいっぱいいっぱいになってしまいます。
それと同様に、サーバーも1台だけだと、一気に大量のタスクが発生した時に、性能が低下したり、機能が停止したりします(実際にこうした効果を期待するサイバー攻撃もあります)。
そのため、複数台サーバーを持つことにより、負荷を分散させることがあるのですが、この負荷分散はスケールアウトでしか実現できません。

また、これはサーバーの信頼性、つまり「どのくらい継続して稼働し続けられるか?」という度合いにもつながってきます。

これも人で例えると、作業者が1人しかいない場合、その人が災害にあったり、病気になってしまったら、作業が滞ってしまいます。
サーバーも同様に、サーバーが1台しかなければ、そのサーバーがある地域が災害に見舞われたり、サーバーが故障したりすると、大変なことになってしまいます。
こうしたトラブルを防ぐためにも、サーバーを複数台持ち、信頼性を上げることも重要です。

AWSでのスケールアウトとスケールアップの例

世界最大のECサイトで知られるAmazonが提供しているAmazonWebServiceのEC2サーバーでは、インスタンスというものをつくり、その中でサーバーの機能を設定していきます。

AWS・インスタンスのタイプの選択画面

そのインスタンスの性能は、「t1.small」や「t2.large」などの表記がなされています。
このサーバーの性能を引き上げる、つまり「t1.small」から「t2.large」に引き上げるのはスケールアップに当たります。
一方で、インスタンスを増やすことはスケールアウトに当たります。

このAWSのインスタンスの話については、以下の記事もご参照ください。