LinuCレベル4 システムアーキテクト 性能・拡張性の設計 問12
性能・拡張性の設計/性能の拡張画像やCSSなどの静的ファイルと商品ページを配信するECサイトで、オリジンサーバーの負荷を下げ、遠方の利用者への応答時間も短くするためにCDNの導入を検討している。設計として適切でないものはどれか。
当サイトのオリジナル問題(LinuCレベル4 システムアーキテクトの出題範囲「性能・拡張性の設計」に対応。実際の試験問題ではありません)
- A静的ファイルはファイル名に版の番号やハッシュ値を含め、内容を更新したら別の名前で配信して、古いキャッシュを参照させないようにする
- Bログイン中の利用者ごとに内容が変わる応答は、エッジでキャッシュさせないか、他の利用者に配信されないようキャッシュの条件を設定する
- C在庫の引き当てや決済のような更新の要求もエッジでキャッシュさせれば、データベースへの書き込みの負荷をCDNに肩代わりさせられる
- Dキャッシュの有効期間を長くするほどオリジンへの要求は減るが、更新した内容が利用者に届くまでにかかる時間はその分長くなる
正解:C
解説
CDNは読み込みの要求をエッジのキャッシュで返すことで、オリジンの負荷と利用者への応答時間を減らす仕組みで、リードアクセスを外部化する手段の1つです。在庫の引き当てや決済のような更新の要求は毎回オリジンで処理しなければならず、キャッシュすると処理が行われないか、他人の結果が返るなどの重大な不具合になります。静的ファイルは名前に版を含めると、有効期間を長くしても更新を確実に反映できます。利用者ごとに異なる応答をキャッシュすると他人の情報が漏れるおそれがあるため、キャッシュの対象と条件を慎重に設計します。
選択肢ごとの解説
- A誤り(正しい記述)。名前に版を含めれば、長い有効期間でキャッシュしても、更新時は新しい名前で確実に最新の内容を配信できます。
- B誤り(正しい記述)。利用者ごとの応答を共有キャッシュに載せると他の利用者に配信されるおそれがあるため、キャッシュの対象から外すなどの設定が必要です。
- C正しい(誤っている記述)。更新の要求は毎回オリジンで処理する必要があり、CDNで書き込みの負荷を肩代わりすることはできません。
- D誤り(正しい記述)。有効期間はオリジンの負荷の削減と更新の反映の速さのトレードオフになります。