スケールアウトの解説(基本情報技術者シラバス用語)

目次

スケールアウトとは

スケールアウトとは、アクセス数や処理データ量の増加に伴い、システムの処理能力を増強するための手法の一つです。具体的には、サーバーの「台数」を増やす(並列に並べる)ことによって、システム全体の処理能力を高めます。これに対して、サーバー単体の性能(CPUやメモリ)をアップグレードして強化する手法を「スケールアップ」と呼びます。スケールアウトは、負荷を分散させやすく、システムの柔軟性を保ちやすいという特徴があります。

具体例

  • Webサーバーの増設:インターネット通販サイトで、セール期間中にアクセスが急増した際、Webサーバーを3台から10台に増やして、アクセスをそれぞれのサーバーに分散(ロードバランシング)させます。これにより、サイトが重くなったりダウンしたりするのを防ぎます。
  • レジの増設:スーパーマーケットで会計待ちの行列が長くなったときに、レジの稼働台数を2台から5台に増やすことで、全体の会計処理のスピードを向上させるイメージです。

もう少し詳しく

システムを拡張する際のアプローチには、大きく分けて「スケールアウト」と「スケールアップ」の2種類が存在します。スケールアウトは、安価な汎用機を複数台横に並べて連携させることで、システム全体の処理能力を向上させるアプローチです(水平方向の拡張とも呼ばれます)。この方式の最大のメリットは、システムを停止させることなく柔軟に性能を追加できる点と、単一障害点(SPOF:Single Point of Failure)を排除しやすい点にあります。1台のサーバーに障害が発生した場合でも、ロードバランサが自動的にそのサーバーを切り離し、他の正常なサーバー群で処理を継続できるため、高い可用性(アベイラビリティ)を実現することが可能です。

一方で、スケールアウトにも特有の課題が存在します。複数台のサーバー間で処理を分担するためには、リクエストを適切に振り分ける負荷分散の仕組みが必須となります。さらに、データベースなどのように「データの一貫性(整合性)」を厳密に保つ必要があるシステムでは、複数のサーバー間で常にデータを同期させる仕組みが必要となり、ソフトウェアの設計や運用が非常に複雑になります。そのため、ユーザーのセッション情報などをサーバー側に保持しない「ステートレス」な設計を採用することが、スケールアウトを成功させるための重要な鍵となります。近年ではクラウドサービスの普及により、アクセス状況の変動に応じて自動的にサーバーの台数を増減させる「オートスケール」機能が標準的に利用されるようになり、このアーキテクチャの重要性は飛躍的に高まっています。

試験でのポイント

情報処理の試験において、スケールアウトとスケールアップ(垂直方向の拡張)の使い分けは非常に頻出のテーマです。以下の対比を正確に理解しておくことが得点源となります。

  • 用途の使い分け:Webサーバー、プロキシサーバー、アプリケーションサーバーなど、個々の処理が独立しており並行して実行しやすいシステムには「スケールアウト」が適しています。対照的に、リレーショナルデータベース(RDBMS)のように高度なトランザクション処理とデータの一貫性が要求される中核システムには、単体の機器性能を底上げする「スケールアップ」が適していると出題されることが定番です。
  • コスト曲線と限界点:スケールアップは、マザーボードや筐体の物理的な制限によって拡張の上限が決まっており、一定以上の性能を求めると専用の超高性能機器が必要になるため、費用対効果が急激に悪化します。一方でスケールアウトは、標準的な性能のサーバーを台数分だけ追加すればよいため、性能向上に対してコストが線形(比例的)に増加し、理論上の上限も極めて高いという対比構造を理解しておきましょう。

関連する用語

スケールアップ、ロードバランサ、ステートレス

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ