スケーラビリティとは
スケーラビリティ(scalability)とは、システムが利用者や仕事量の増大に柔軟に対応できる能力・度合いのことです。これは
電気通信や
ソフトウェア工学において、システムやネットワーク、
アルゴリズムが持つべき望ましい特性の一つであり、一種の拡張性とも言えます。
具体的には、小規模なシステムを大規模にする際に、システム全体を交換するのではなく、
リソース(特に
ハードウェア)を追加することで、透過的に規模を拡張できる能力を指します。例えば、建物を増築したり別棟を建てたりするイメージです。
リソースの量に比例してシステム全体の処理能力(
スループット)が向上する場合、そのシステムはスケーラブルであると言えます。対義語としては、既存の仕組みを破棄して新たな仕組みを構築する「スクラップアンドビルド」が挙げられます。
スケーラビリティの一般的な定義は難しいですが、具体的な事例においては、対象領域でスケーラビリティを確保するための条件を特定することが重要です。これは、データベース、
ルーター、ネットワークなどの
情報工学分野において非常に重要です。また、スケーラビリティは分散処理における透過性の概念とも密接に関連しています。
スケーラビリティの評価
スケーラビリティの高さは、さまざまな尺度で評価されます。
規模透過性: 負荷の増減に合わせて、リソースを柔軟に拡大・縮小できること。
位置透過性: ユーザーや
リソースの物理的な距離を意識せずに、変わらない使い勝手でシステムを利用できること。
異種透過性: システムを構成する機器やソフトウェアが異なっていても、それを意識せずに管理・利用できること。
特に、規模透過性はスケーラビリティを議論する上で重要な要素となることが多いです。
例えば、スケーラブルなデータベース管理システムでは、プロセッサやストレージを追加することで、より多くのトランザクションを処理できるようになります。また、システムの停止を伴わずにアップグレードできることも重要です。
ルーティングプロトコルにおいては、ネットワーク内のノード数をNとしたとき、各ノードに必要なルーティングテーブルのサイズがO(log N)に従って増大する場合に、そのプロトコルはスケーラブルであると評価されます。
スケールアップとスケールアウト
スケーラビリティを向上させるための具体的な手法として、スケールアップ(垂直スケール)とスケールアウト(水平スケール)があります。
スケールアップ: 単一のノードに
リソースを追加する方法です。
CPUやメモリの増強、
コンピュータ自体の買い換えなどが該当します。
スケールアウト: システムにノードを追加する方法です。クラスタなどの並列コンピューティング技術が用いられます。
現実のシステムでは、それぞれ上限や制約、デメリットが存在するため、両者を組み合わせて利用されることもあります。
システム設計においては、処理能力を向上させるだけでなく、ハードウェアのスケーラビリティを高めることが重要とされています。一般的に、ノードを増やしてパフォーマンスを向上させる方が、個々のノードの処理能力をチューニングするよりも安価であることが多いからです。
しかし、スケールアウトには限界があります。ノード数を増やしても、利益が鈍化していく現象が見られます。この問題はパフォーマンスエンジニアリングで扱われます。例えば、プログラムの一部が並列化可能である場合、アムダールの法則によって、並列化による高速化の限界がわかります。
並列化可能な部分の割合を(1 - F)、プロセッサ数をPとしたとき、得られる最大の高速化は以下の式で表されます。
1 / (F + (1 - F) / P)
例えば、並列化可能な部分が70%のプログラムを、プロセッサ数を1から4にスケールアウトした場合、高速化は約2.1倍になります。プロセッサ数を8に増やしても、高速化は約2.6倍にしかなりません。つまり、ハードウェアを単純に追加するだけでは、必ずしも最適な性能が得られないのです。
スケーラビリティの他の分野での応用
スケーラビリティの概念は、情報工学以外の分野でも応用されています。
変圧器の容量増設: 三相交流で二つの変圧器をV結線しておけば、将来的に容量が増えた場合に、変圧器を一つ追加してΔ結線にすることで、容量を増やすことができます。
売り場面積拡張: 小売店が規模を拡大する際、移転だけでなく、増築や隣接物件の取得など、スケーラブルな計画を行うことがあります。
クラウドコンピューティング: ユーザーのアプリケーションを変更することなく、プラットフォーム側の計算資源や記憶領域を増減できる技術です。これにより、より高性能な
コンピュータへの移行やストレージ追加に伴うアプリケーションの変更が不要になります。
コンピュータの実メモリや外部記憶装置: 実メモリは空きスロットがあれば増設でき、適切に設計されたアプリケーションでは、増えたメモリを有効活用できます。外部記憶装置も、OSのスパニング機能があれば、アプリケーションを変更せずに容量を増やすことができます。
似ているが異なる概念
スケーラビリティと似ている概念として、オーバードライブプロセッサが挙げられます。これは、インテルがCPUのアップグレードパスとして販売していたプロセッサや対応コンピュータですが、既存のプロセッサを置き換えて使用するものであり、スケーラビリティとは異なります。
まとめ
スケーラビリティは、システムが変化する要求に対応するために重要な概念です。システム設計においては、スケールアップとスケールアウトを適切に使い分け、将来的な拡張を見据えた設計が求められます。
関連項目
アムダールの法則
並列化
分散コンピューティング
* 負荷分散