スケールアウトとは?
サーバーの台数を増やすことで、全体の処理能力を向上させることを「スケールアウト(scale-out)」といいます。増やしたサーバーに処理を分散(アウト)させることで、システムの可用性を高めます。水平的に性能をアップさせるため、「水平スケーリング」とも呼ばれます。スケールアウトには、以下のような特徴があります。
適した利用方法
・大規模なシステムを運用する。
・突発的なアクセス増加に対応する。
・Webサーバーやアプリケーションを扱う。
メリット
・サーバー機器を増やせば増やすほど、処理能力が向上する。
・システムを停止せずにノードを追加できる。
・一部の機器が停止しても他の機器で継続できるため、ダウンタイム(停止時間)が発生しない。
デメリット
・機器の数だけ設定やメンテナンスなどの作業量が増える。
・消費電力や保守費用が増大する。
サーバーの台数を減らして、リソースを最適化する「スケールイン(scale-in)」を併用する場合もあります。例えば、Web上でサーバーが処理しきれないほどのアクセスが集中したときは、スケールアウトで処理能力を高め、アクセスが減少してきたら、スケールインでサーバーを減らし、無駄なコストを削減します。
また、複数のサーバーにリクエストを分散させるには、スケールアウトの考え方を応用したロードバランサー(負荷分散装置)の導入も推奨されています。
スケールアップとは?
一方、サーバーのCPUやメモリーなど、ハードウェアの増設によって処理能力を向上させることを「スケールアップ(scale-up)」といいます。サーバーのスペックそのものを引き上げる(アップ)ため、「垂直スケーリング」とも呼ばれます。スケールアップには以下のような特徴があります。
適した利用方法
・性能強化を頻繁に実施しない、小規模で比較的簡素なWebサービスの運用。
・データベースを扱うサーバーなど特定の機器を使用。
・分散化に不向きなシステム。
メリット
・一台の機器が対象なので、作業量が少なく手間がかからない。
・設置場所は最小限、消費電力も抑えられる。
・メンテナンスしやすい。
デメリット
・物理的な制約があり、性能の向上には限度がある。
・作業中に機器を停止するため、ダウンタイムが発生する。
・故障した際のリスクが大きい。
スケールアップに対して、サーバーのスペックを下げることを「スケールダウン(scale-down)」といい、サーバーリソースの最適化や無駄なコストの削減を行います。IaaS(Infrastructure as a Serviceの略。ネットを通じてインフラを提供)などのクラウドを利用すれば、管理パネルから、CPU・メモリーなどのスペックを簡単に下げることができます。
オートスケールによるスケールアウトとスケールアップ
スケールアウトとスケールアップのどちらが適しているかは、サーバーの行う処理の内容で異なります。それぞれの特徴を理解し、用途に応じて使い分けることが重要となります。
いずれにしても、オンプレミスで運用する場合、ハードウェアを新たに確保する必要があり、作業に手間や時間がかかります。そのため、インフラをクラウド化して「オートスケール」を構築するケースが増えています。
オートスケールとは、サーバー負荷に応じて、自動的にクラウドサーバーの台数やスペックを増減させる機能のことです。クラウド事業者と契約を結ぶことで、サーバーの負荷を常に監視し、必要に応じて、スケールアウト(スケールイン)とスケールアップ(スケールダウン)を行い、システムを安定的に稼働させることができます。
オートスケールは突発的にアクセスが集中した場合も、安定したサービスの提供が可能で、サーバーダウンや応答の遅延による機会損失も回避できます。サーバー数やスペックを最適化することで運用コスト削減にもつながります。スケーラビリティの観点からも、有用な機能といえるでしょう。