LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問7
性能・拡張性の設計/性能の拡張Webアプリケーションサーバーをステートレスにし、負荷に応じて台数を増減できるようにしたい。設計として適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)
- A利用者がアップロードしたファイルは受け付けたサーバーのローカルディスクに保存し、以後の要求はそのサーバーに固定する
- Bセッション情報は外部のインメモリストア等に置き、どのサーバーが要求を受けても同じ利用者の状態を参照できるようにする
- Cアプリケーションのログは各サーバーのローカルに溜めず、集中ログ基盤へ転送して台数の増減に影響されないようにする
- D設定値はイメージに含めるか外部の設定ストアから取得し、サーバーを入れ替えても同じ状態で起動できるようにする
正解:A
解説
ステートレスな設計では、アプリケーションサーバーに利用者やデータの状態を持たせず、データ・セッション情報・ログを外部に出します。こうすることで、どのサーバーが要求を受けても同じ結果を返せ、台数の追加や削除、障害による入れ替えを自由に行えます。アップロードされたファイルをローカルディスクに置いてスティッキーセッションで固定すると、そのサーバーが縮退や障害で消えたときにファイルが失われ、負荷も偏るため、オブジェクトストレージなどの共有の保存先に置くべきです。設定値も、起動時に同じ状態を再現できるよう、イメージや外部の設定ストアで管理します。
選択肢ごとの解説
- A正しい(誤っている記述)。データをサーバーに持たせると、台数を減らしたり障害で入れ替えたりしたときにファイルが失われるため、共有の保存先へ外部化します。
- B誤り(正しい記述)。セッション情報を外部化すれば、特定のサーバーに利用者を固定せずに、どのサーバーでも処理を引き継げます。
- C誤り(正しい記述)。ログを外部化すれば、台数を減らしたときにログが失われず、複数台のログを一か所で調べられます。
- D誤り(正しい記述)。設定を外部化・定型化しておけば、どのサーバーも同じ構成で起動でき、自動的なスケールアウトに対応できます。