応用情報技術者 2023年 秋期 午前2 問13
問題文
システムの性能を向上させるための方法として、スケールアウトが適しているシステムはどれか。
選択肢
ア:一連の大きな処理を一括して実行しなければならないので、並列処理が困難な処理が中心のシステム
イ:参照系のトランザクションが多いので、複数のサーバで分散処理を行っているシステム(正解)
ウ:データを追加するトランザクションが多いので、データの整合性を取るためのオーバーヘッドを小さくしなければならないシステム
エ:同一のマスターデータベースがシステム内に複数配置されているので、マスターを更新する際にはデータベース間で整合性を保持しなければならないシステム
🔒 解説は解答すると表示されます
スケールアウト適用条件【午前2解説】
正解の理由
参照(読み取り)処理が多く、複数サーバで処理を分散できる構成は、ノードを水平に追加して負荷を分散するスケールアウトが有効です。選択肢イは「参照系トランザクションが多く、複数のサーバで分散処理を行っている」ため、読み取りをリードレプリカやキャッシュで横に広げられ、処理能力をほぼ線形に増やせます。これによりスループット向上と耐障害性の改善が同時に達成できるため、スケールアウトが適している理由になります。
解法ステップ
- 処理の性質(読み取り中心か、書き込み中心か、一括処理か)を把握する。
- 並列化のしやすさを考える(独立した処理は水平に分散しやすい)。
- データ整合性や同期の必要性を確認する(高い一貫性が必要なら水平分散は追加コスト)。
- 各選択肢を上記観点で照らし合わせ、最も「横に増やす」ことで効果が得られるものを選ぶ。
この流れで各選択肢を検討すると、読み取り分散に適したイが最も適合します。
選択肢別の誤答解説
- ア: 一連の大きなバッチ処理など、並列化が困難な処理中心のシステムは、処理を分割して複数ノードで同時実行できないためスケールアウトの効果が小さい。こういう場合はアルゴリズム改善や垂直スケーリング(単一機の性能向上)が現実的。
- イ: 正答。参照系が多く、処理を複数サーバで分散できれば、リードレプリカや負荷分散、キャッシュを用いることでスケールアウトが有効。
- ウ: 追加(書き込み)トランザクションが多いと、分散時に整合性確保やロックがボトルネックになりやすい。書き込み負荷を水平にさばくにはシャーディングなど設計変更が必要で、単純にスケールアウトするだけではオーバーヘッドが増える可能性が高い。
- エ: 同一のマスターデータベースが複数配置されている場合、更新時に複数DB間で整合性を保持する必要があるため、単純なスケールアウトは逆に複雑性と同期コストを増やす。マルチマスター構成や分散トランザクションの採用が必要で、容易ではない。
よくある誤解
- 「スケールアウトは常に優れている」 — 読み取り中心の無状態処理には効果的だが、書き込み多発や厳格な整合性が要求される場合は設計コストや同期オーバーヘッドが増す。
- 「スケールアップは垂直分割である」 — 正しくは垂直スケーリング(垂直拡張)で、単一機のCPUやメモリを増やす手法であり、分割(分散)とは別概念。
- 「複数台にすれば整合性問題は自動解決する」 — レプリケーションや分散化は整合性モード(強整合・最終整合)を選ぶ必要があり、単純増加では問題が残る。
補足コラム
- スケールアウト(水平スケーリング): ノードを横に増やして処理能力や耐障害性を向上させる。負荷分散やリードレプリカ、キャッシュ、コンテナ化された無状態サービスとの相性が良い。
- 垂直スケーリング(垂直拡張): サーバやDBのCPU・メモリ・ストレージを増強して単一機の能力を高める。ソフトウェアの並列化が困難な場合やライセンス制約がある場合に有効。
- 水平分割(シャーディング): データをキーで分割して複数ノードに分散配置し、書き込みやストレージのボトルネックを解消する手法。ただしアプリ側のルーティングやトランザクション設計が必要で複雑度が上がる。
- 実務上の目安: 読み取りが多くステートレスな処理はスケールアウト向き。書き込み頻度が高く整合性が厳しい処理は、まずアーキテクチャ検討(シャーディング、キューング、専用ハードの導入、または垂直スケーリング)を行う。
FAQ
Q1: 書き込みが多い場合はスケールアウトできないのですか?
A1: 完全に不可能ではありませんが、シャーディングやイベントソーシング、コンフリクト解決などの設計工数と運用コストが必要になるため、単純増台だけで解決するケースは少ないです。
A1: 完全に不可能ではありませんが、シャーディングやイベントソーシング、コンフリクト解決などの設計工数と運用コストが必要になるため、単純増台だけで解決するケースは少ないです。
Q2: レプリカを増やすだけでスケールアウトになるのですか?
A2: 読み取り負荷の分散には有効ですが、書き込みはマスターに集中するため書き込みボトルネックは残ります。用途に応じてキャッシュやシャーディングと組み合わせます。
A2: 読み取り負荷の分散には有効ですが、書き込みはマスターに集中するため書き込みボトルネックは残ります。用途に応じてキャッシュやシャーディングと組み合わせます。
Q3: どちらを先に考えるべきですか、スケールアップとスケールアウト?
A3: まず現状ボトルネックの分析(CPU、I/O、ロック、待ち時間)を行い、並列化で改善可能ならスケールアウトを、単一プロセスの性能不足なら垂直スケーリングを検討します。
A3: まず現状ボトルネックの分析(CPU、I/O、ロック、待ち時間)を行い、並列化で改善可能ならスケールアウトを、単一プロセスの性能不足なら垂直スケーリングを検討します。
関連キーワード: スケールアウト、垂直スケーリング(垂直拡張)、水平分割、シャーディング、リードレプリカ、キャッシュ、負荷分散

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

