【スケールアウトとは】言葉の意味やデータベースでの必要性を解説
PostgreSQLインサイド

システムの設計段階で、システムに対する負荷を正確に見積もることは難しいです。よくある事例として、設計時に想定していなかった利用者やデータ量の増加により、システムへの負荷が高まり、提供サービスのレスポンス低下を招くことがあります。このような場合の対策手法として、スケールアウトやスケールアップがあります。
本記事では、「スケールアウトとは何か?」についてシステムに携わる関係者が共通の理解を深めるために、スケールアウトの特徴、スケールアップとの違い、必要性の順で説明します。
また、本記事の最後では、データベースに今求められるスケールアウトを解説しつつ、スケールアウトが可能なデータベース製品をご紹介します。

目次

スケールアウトとは

スケールアウト(scale out)とは、サーバーの台数を増やすことで、より多くの処理を実行できるようにすることです。その結果、システム全体の処理能力を高めることができます(図1参照)。

ちなみに、スケールアウトの反意語として、スケールイン(scale in)があり、サーバー台数を削減しシステムやソフトウェアの過剰な性能を抑えることです。

スケールアウトの例

図1:スケールアウトの例

特徴:4つのメリットと2つのデメリット

スケールアウトのメリットとして、以下が挙げられます。

  • スケールアウト前のサーバーを含め安価なサーバーで実現できる
  • 無停止(ダウンタイムなし)で性能を向上できる
  • 基本的に性能向上に制限がない
  • あるサーバーで発生した障害が、他のサーバーに影響しないように障害の影響範囲を局所化することもできる

また、スケールアウトのデメリットとして、以下が挙げられます。

  • 管理するべきサーバー台数が増えるため、保守コストが増える
  • システムやソフトウェアによっては、データの再配置などの作業が必要である

スケールアップとの違い

はじめに、スケールアップの定義を説明します。その後にスケールアウトとスケールアップとの違いに関して解説します。

システムやソフトウェアの処理能力を向上させる方法の1つとして、スケールアップがあります。スケールアップ(scale up)とは、より性能の高いCPUに変更したり、より多くのメモリを搭載することで性能を向上させる方法のことです(図2参照)。この方法は、単一サーバで処理能力を向上させることができます。
ちなみに、スケールアップの反意語として、スケールダウン(scale down)があり、性能の低いCPUに変更したり、少ないメモリを搭載することで過剰な性能を抑えることです。

スケールアップの例

図2:スケールアップの例

スケールアップのメリットとして、以下が挙げられます。

  • 管理すべきサーバー台数が増えないため、保守コストの増加やシステム構成の変更が発生しない
  • データ再配置などの追加作業なく容易に性能を向上できる

また、スケールアップのデメリットとして、以下が挙げられます。

  • サーバーの停止が必要であるため、運用サービスなどの停止が必要である
  • 高性能なCPUなどへの置き換えが必要な場合、部品単価(保守時の交換費用)が高くなる
  • サーバーに増設できるCPU数やメモリ容量には上限があるため、処理能力向上には限界がある

以上のように、スケールアウトとスケールアップの違いとして「処理能力向上を実現する方法」が異なります。そのため、得られるメリットやデメリットも違ってきます。

データベースにおけるスケールアウト

データベースでのスケールアウトの重要性を解説し、スケールアウトが可能なデータベース製品をご紹介します。

スケールを変える必要性

企業のクラウド利用が進む中、エンタープライズなシステムは、性能や信頼性に加え、拡張性や柔軟性(スケーラビリティ)が求められます。オンプレミス環境からクラウド環境に移行してきたことで、CPU、メモリ、サーバー、記憶ディスクなどの資源は「所有するもの」から「利用するもの」に変わってきました。これはクラウド環境に提供される資源を活用し、変動するビジネス状況に応じてシステムの形も変えていけるようになったことを意味します。このことから、データベースに関しても、その構成や処理能力を柔軟に変更できることが求められています。

よく用いられるスケールアウト

運用系のリードレプリカを増やし、リードレプリカで参照系のSQL処理(SELECTクエリなど)を実行することで、参照の処理能力を向上するといったスケールアウトがクラウドなどでよく用いられます(図3参照)。このスケールアウトは、データベースの負荷分散機能やレプリケーション機能を使うことで実現できます。詳しくは以下の記事をご覧ください。OSSデータベースであるPostgreSQLを例として、詳しく解説しています。

参照の処理能力向上を目的としたスケールアウトの例

図3:参照の処理能力向上を目的としたスケールアウトの例

更新系のSQL処理もスケールアウトしたい場合

以下の方式を採用したスケールアウトを用いることで、更新系のSQL処理(INSERTクエリなど)の処理能力も向上できます。

  • シェアード・エブリシング方式:データを共有ストレージに保管する構成(図4参照)
  • シェアード・ナッシング方式:データを各データノードのローカルストレージに分散配置する構成(図5参照)

シェアード・エブリシング方式

図4:シェアード・エブリシング方式

シェアード・ナッシング方式

図5:シェアード・ナッシング方式

各方式の特徴や比較に関しては、以下の記事をご覧ください。

更新系のSQL処理をスケールアウトできるデータベース製品の例

更新系のSQL処理のスケールアウトが可能な商用データベースの代表的な製品として、「Oracle Real Applications Clusters(以降、Oracle RACと略す)」があります。Oracle RACでは、シェアード・エブリシング方式のスケールアウトを採用しています。Oracle RACの製品概要に関しては、以下をご覧ください。

また、オープンなPostgreSQL系のデータベースであるFujitsu Enterprise Postgresでも、更新系のSQL処理をスケールアウトする機能がサポートされています。Fujitsu Enterprise Postgresは、PostgreSQLを拡張し、セキュリティ、性能、信頼性を強化した富士通のデータベースであり、シェアード・ナッシング方式のスケールアウトを採用しています。Fujitsu Enterprise Postgresのスケールアウトに関しては、以下の記事で詳しく解説しています。

2023年5月24日公開

オンデマンド(動画)セミナー

    • PostgreSQLに関連するセミナー動画を公開中。いつでもセミナーをご覧いただけます。
      • 【事例解説】運送業務改革をもたらす次世代の運送業界向けDXプラットフォームの構築
      • ハイブリッドクラウドに最適なOSSベースのデータベースご紹介

本コンテンツに関するお問い合わせ

お電話でのお問い合わせ

Webでのお問い合わせ

当社はセキュリティ保護の観点からSSL技術を使用しております。

ページの先頭へ