スケーラビリティ(Scalability)とは、利用者数やデータ量が増えたときに、それに応じてシステムの処理能力を拡張できる度合いのことです。日本語では「拡張性」とも呼ばれ、サービスが急成長した際にきちんと対応できるかどうかを左右する重要な要素とされています。
現実世界に例えると、スケーラビリティはお店のレジの台数のようなものです。お客さんが少ないうちはレジがひとつでも足りますが、混雑してきたときにすぐレジを増やせるお店であれば、行列を作らずに対応できます。この「増やせる余地」がスケーラビリティにあたります。
スケールアップとスケールアウト
| 方式 | 内容 |
|---|---|
| スケールアップ | 1台のサーバーの性能そのものを強化する |
| スケールアウト | サーバーの台数を増やし、処理を分散させる |
スケーラビリティが重視される理由
Webサービスやアプリの利用者数は、公開当初の予想を上回るペースで急増することがあります。あらかじめ拡張しやすい設計にしておかないと、アクセスが集中した際にシステムが処理しきれず、表示が遅くなったり停止したりする事態につながります。
クラウドとの相性
クラウドサービスの多くは、必要に応じてサーバーの台数や性能を柔軟に増減できる仕組みを備えています。あらかじめ多くの機器を用意しておく必要がなく、利用状況に合わせて無駄なくスケーラビリティを確保できる点が、クラウドが広く使われる理由のひとつです。
スケーラビリティを高める工夫
ひとつのサーバーに処理を集中させず、複数のサーバーへ処理を振り分ける「負荷分散」の仕組みを取り入れることで、台数を増やすだけで性能を拡張しやすい構成にできます。データベースの設計段階から、将来の拡張を見据えておくことも大切です。
スケーラビリティと可用性の関係
拡張性が高いシステムは、多くの場合一部のサーバーが故障しても他のサーバーで処理を続けられるように設計されています。利用者数の増加に対応する力と、障害に強い仕組みは、切り離せない関係にあります。
拡張性を欠いた場合の問題
サービスが人気を集めても、拡張しにくい設計のままでは、アクセス集中時に表示の遅延やサーバーダウンが発生するおそれがあります。開発の初期段階から、将来の利用者増加を見据えた設計を意識しておくことが望まれます。
身近な例で考えるスケーラビリティ
セール開始直後のオンラインショップや、話題のニュースが流れた直後のニュースサイトなど、一時的にアクセスが急増する場面は珍しくありません。こうした急な変化にも耐えられるかどうかが、そのシステムのスケーラビリティを測る目安になります。

コメント