スケーラビリティ【scalability】スケーラブル/scalable
概要

拡張の方法には主として二つの考え方がある。一つは「スケールアップ」(垂直スケール)で、CPUやメモリなど単体機器の性能を強化することで処理能力を高める手法である。もう一つは「スケールアウト」(水平スケール)で、機器の数を増やして負荷を分散させる手法である。
スケールアップは構成変更が少なく管理しやすい反面、性能向上に限界がある。スケールアウトは大規模化しやすいが、処理の分散や同期のための仕組みが必要になる。クラウドサービスの普及により、仮想サーバやコンテナを需要に応じて増減させる「自動スケーリング」(autoscaling)が広く利用されるようになり、スケールアウトは以前より容易に実現できるようになった。
スケーラビリティは単純な性能の高さとは異なる概念である。高性能なシステムでも、利用量の増加に応じて柔軟に拡張できなければスケーラビリティが高いとはいえない。逆に初期性能がそれほど高くなくても、装置の追加によって段階的に能力を増やせる設計であれば、高いスケーラビリティを持つと評価される。
データベースなどで大量のデータを扱う場合、一台のサーバだけでは処理が追いつかなくなるため、データを複数の機器に分散保存したり、読み取り専用の複製を用意したりする手法が取られる。アクセス集中を緩和するキャッシュ機構や、処理を複数のサーバに振り分ける「ロードバランサ」の導入、システムを小さな機能単位に分割する「マイクロサービス」型のシステム構造なども、スケーラビリティを高めるための設計手法として用いられる。
現代ではIT分野に限らず、一般のビジネス分野や組織運営などの文脈でも、柔軟に伸縮可能な性質を指してスケーラビリティという用語が用いられることがある。例えば、事業モデルや業務プロセスが、売上や顧客数の拡大に対して追加コストや工数を抑えながら対応できる場合などにスケーラビリティが高いと評することがある。