スケーラビリティとは、増加する作業量に対応できるシステムの特性です。ソフトウェアシステムの定義の一つでは、スケーラビリティはシステムにリソースを追加することで実現できるとされています。[1]
経済的な文脈において、スケーラブルなビジネスモデルとは、企業がリソースの増加に応じて売上を伸ばせることを意味します。例えば、荷物の配送システムは、配送車両を増やすことでより多くの荷物を配送できるため、スケーラブルです。しかし、すべての荷物が仕分けのためにまず単一の倉庫を通過する必要がある場合、1つの倉庫で処理できる荷物の数は限られているため、システムのスケーラビリティは低下します。[2]
コンピューティングにおいて、スケーラビリティとは、コンピュータ、ネットワーク、アルゴリズム、ネットワークプロトコル、プログラム、アプリケーションの特性です。例えば、検索エンジンは増加するユーザー数とインデックスするトピック数に対応する必要があります。[3] Webスケールとは、大規模クラウドコンピューティング企業の機能をエンタープライズデータセンターに導入するコンピュータアーキテクチャのアプローチです。[4]
分散システムには、著者によって様々な定義があり、スケーラビリティの概念を弾力性の一部と捉える人もいれば、別個の概念と捉える人もいます。Marc Brooker氏によると、「システムは、追加ワークロードの限界費用がほぼ一定となる範囲でスケーラブルである」とのことです。サーバーレス技術はこの定義に当てはまりますが、インフラコストだけでなく総所有コストも考慮する必要があります。[5]
数学において、スケーラビリティとは、主にスカラー乗算における閉包性を指します。
産業工学と製造業において、スケーラビリティとは、プロセス、システム、または組織が増大する作業負荷に対応し、高まる需要に適応し、運用効率を維持する能力を指します。スケーラブルなシステムは、品質や性能を損なうことなく、生産量の増加、新製品ライン、市場の拡大を効果的に管理できます。この文脈において、スケーラビリティは、顧客の期待に応え、競争力を維持し、持続可能な成長を目指す企業にとって不可欠な考慮事項です。スケーラビリティに影響を与える要因には、生産プロセスの柔軟性、従業員の適応性、先進技術の統合などがあります。スケーラブルなソリューションを実装することで、企業はリソースの活用を最適化し、コストを削減し、業務を合理化できます。産業工学と製造業におけるスケーラビリティは、企業が変動する市場状況に対応し、新たな機会を活用し、絶えず変化するグローバルな環境で繁栄することを可能にします。[要出典]
米国の緊急対応機関では、インシデント・コマンド・システム(ICS)が活用されています。ICSは、単発エンジンによる道路脇の山火事から州間山火事まで、幅広い規模のリソース調整を可能にします。現場に最初に到着したリソースが指揮権を握り、リソースの指示と責任の委譲(5~7名の隊員を管理し、さらに最大7名に委譲し、事態の拡大に応じてさらに増員)を行う権限を持ちます。事態が拡大するにつれて、より上級の隊員が指揮権を握ります。[6]
スケーラビリティは、次のような複数の次元で測定できます。[7]

資源は大きく分けて水平と垂直の2つのカテゴリーに分類されます。[8]
水平方向のスケーリング(アウト/イン)とは、分散ソフトウェアアプリケーションに新しいコンピュータを追加するなど、ノードの追加または削除を意味します。例えば、1台のWebサーバーから3台へのスケールアウトなどが挙げられます。地震解析やバイオテクノロジーなどの高性能コンピューティングアプリケーションでは、かつては高価なスーパーコンピュータが必要だったタスクをサポートするために、ワークロードを水平方向にスケーリングしています。一方、大規模なソーシャルネットワークなどのワークロードは、最大規模のスーパーコンピュータの容量を超えており、スケーラブルなシステムでしか処理できません。このスケーラビリティを活用するには、効率的なリソース管理と保守のためのソフトウェアが必要です。[7]
垂直方向のスケーリング(アップ/ダウン)とは、単一のノードにリソースを追加する(または単一のノードからリソースを削除する)ことを意味し、通常は単一のコンピューターにCPU、メモリ、またはストレージを追加することを伴います。[7]
スケールアップの利点としては、管理の複雑さの増大を回避できること、リソース間でタスクを割り当てるためのより高度なプログラミング、スループット、レイテンシ、ノード間の同期といった問題への対処などが挙げられます。さらに、一部のアプリケーションは水平方向にスケールしません。
ネットワーク機能仮想化では、これらの用語は異なる定義を持っています。スケールアウト/インは、リソースインスタンス(仮想マシンなど)を追加/削除することでスケーリングする機能ですが、スケールアップ/ダウンは、割り当てられたリソース(メモリ/CPU/ストレージ容量など)を変更することでスケーリングする機能です。[9]
データベースのスケーラビリティを実現するには、サーバー、プロセッサ、メモリ、ストレージなどのハードウェアリソースの増加に応じて、データベースシステムが追加の作業を実行できることが求められます。ワークロードは増加し続けており、データベースへの需要もそれに伴って増加しています。
アルゴリズムの革新には、行レベルのロック、テーブルとインデックスのパーティション分割が含まれます。アーキテクチャの革新には、マルチサーバー構成を管理するためのシェアード・ナッシング・アーキテクチャとシェアード・エブリシング・アーキテクチャが含まれます。
スケールアウト型データストレージの文脈において、スケーラビリティとは、完全なデータ整合性を保証するストレージクラスタの最大サイズとして定義されます。つまり、冗長化された物理データコピーの数とは無関係に、クラスタ全体で保存されたデータの有効なバージョンは常に1つだけであることを意味します。非同期的にコピーを更新することで「遅延」冗長性を提供するクラスタは、「結果整合性」と呼ばれます。このタイプのスケールアウト設計は、可用性と応答性が整合性よりも重視される場合に適しています。これは多くのWebファイルホスティングサービスやWebキャッシュに当てはまります(最新バージョンが必要な場合は、伝播するまで数秒待つ必要があります)。従来のトランザクション指向アプリケーションでは、この設計は避けるべきです。[10]
多くのオープンソース、さらには商用スケールアウト・ストレージ・クラスター、特に標準的なPCハードウェアとネットワーク上に構築されたものは、CouchDBなどの一部のNoSQLデータベースや前述のもののように、結果整合性のみを提供します。書き込み操作は他のコピーを無効化しますが、多くの場合、それらの確認応答を待たずに実行されます。読み取り操作は通常、応答前にすべての冗長コピーをチェックしないため、先行する書き込み操作が読み取られない可能性があります。大量のメタデータ信号トラフィックを許容可能なパフォーマンス(つまり、非クラスター化ストレージデバイスまたはデータベースのように動作)で処理するには、専用のハードウェアと短距離接続が必要になります。[要出典]
強力なデータ一貫性が期待される場合は、次の指標を確認してください。[引用が必要]
最終的に一貫性のある設計の指標(トランザクションアプリケーションには適していません!)は次のとおりです。[引用が必要]
システム設計においては、容量よりもハードウェアのスケーラビリティに重点を置くことが推奨されることが多い。一般的に、パフォーマンス向上のためにシステムに新しいノードを追加する方が、各ノードが処理できる容量を向上させるためのパフォーマンスチューニングを行うよりも安価である。しかし、このアプローチは収穫逓減の法則に従う可能性がある(パフォーマンスエンジニアリングで説明されているように)。例えば、プログラムの70%を並列化し、1つのCPUではなく複数のCPUで実行することで高速化できると仮定する。計算のうち逐次的に実行される割合を 、並列化可能な割合を とすると、P個のプロセッサを使用することで達成できる最大の高速化は、アムダールの法則に従って次のように求められる。
この例の値を4つのプロセッサに代入すると、
計算能力を8つのプロセッサに倍増すると、
処理能力を倍増しても、処理速度は5分の1程度しか向上しません。問題全体を並列化できれば、速度も倍増します。したがって、ハードウェアを増設することが必ずしも最適なアプローチとは限りません。
分散システムでは、ユニバーサル・スケーラビリティ法則(USL)を用いてシステムのスケーラビリティをモデル化し、最適化することができます。USLはNeil J. Guntherによって提唱され、競合や一貫性といったパラメータに基づいてスケーラビリティを定量化します。競合とは、共有リソースの待機やキューイングによる遅延を指します。一貫性とは、データの一貫性が確保されるまでの遅延を指します。例えば、競合率が高い場合は、処理が逐次的に行われているため並列化が可能であることを示しており、一貫性が高い場合は、プロセス間の依存関係が過剰であることを示唆しており、相互作用を最小限に抑える必要があることを示しています。また、USLを用いることで、システムの最大有効容量を事前に計算することが可能です。その容量を超えてシステムをスケールアップすることは無駄です。[11]
高性能コンピューティングには、スケーラビリティに関して 2 つの共通の概念があります。
{{cite journal}}: CS1 maint: DOI inactive as of July 2025 (link)