Amazon CloudFrontとCDNのシナリオ判断
配信が遅い、更新が見えない、利用者別の内容が混ざるといった事例から、CloudFrontの設定で何を確認するか考えます。ヒット率だけを最大化せず、内容の正確さと配信の要件を両立します。
この単元で学ぶこと
- 配信経路とキャッシュ結果を切り分ける
- 更新方法とキャッシュ識別を要件から選ぶ
- 数値と制約を踏まえて改善を判断する
本文解説
1. 遠い利用者へ配信する 一つのリージョンのHTTPサーバーから世界へ画像を配る場合、利用者へのネットワーク遅延と元サーバーの負荷が課題になります。CloudFrontを前段に置き、キャッシュ可能な画像をエッジで再利用する方法を比較します。DBへの書込みそのものをCDNへ移すという設計ではありません。
2. 初回が遅い理由を調べる 新しい画像に対する初回要求では、使えるキャッシュがなく元の取得が必要な場合があります。二回目以降でも、別のキャッシュキーや期限、削除等によって同じヒットになるとは限りません。配信拠点が存在することと、目的の内容がそこに有効に保存されていることを分けます。
3. ヒット率の計算 対象とする1000要求のうち800件がヒットしたなら、ヒット率は800÷1000で80%、残りは200件です。ただしミス200件が必ず最終オリジンへの200回の取得になるとまでは判断しません。CloudFront内のキャッシュ階層や取得の集約等があり、料金や最終オリジン負荷は実測で確認します。
4. 誤った言語の混在 URLのlang=jaとlang=enで応答が異なるのに、言語をキャッシュキーへ反映しない構成を考えます。同じ応答として再利用される可能性があるため、必要な違いを識別するか、その内容のキャッシュ方式を見直します。TTLだけを短くしても識別の誤りそのものは解消しません。
5. 更新を急ぐ場合 同じURLの規約文を急いで差し替えるなら、オリジンの更新に加えてCloudFrontの対象パスの無効化等を検討します。アプリ資源なら版ごとにファイル名を変える方法もあります。ブラウザーのキャッシュ条件と画面内で参照するURLも確認し、CloudFrontの操作だけで全閲覧者の表示が即時更新済みとは報告しません。
6. 個人情報を配る場合 認証利用者の注文履歴を扱うなら、共有してよい公開画像とは設定を分けます。例えば該当パスのキャッシュを無効にし、必要な認証情報をオリジンへ届けて認可する構成を確認します。単にTTLを長くして負荷を下げる方法は、内容の分離や最新性を損なうおそれがあります。
7. オリジン障害への備え キャッシュに残る一部の画像を配信できても、未取得の内容や動的処理まで成功するとは限りません。期限切れ時の挙動等も設定によります。オリジンの可用性、必要ならフェイルオーバー、データのバックアップを別に設計し、キャッシュがあるから元データを削除してよいとは考えません。
8. 結果を比較する 変更前後で遅延、ヒット率、誤った応答の有無、オリジンの要求数、費用を比較します。キャッシュキーへ不要な全Cookieを追加すると同じ公開画像が細かく分かれ再利用が減ることがあります。応答を変えるのに必要な情報を選び、安全性と再利用のバランスを評価します。
図解
重要ポイント
- ヒット率の向上だけで内容の正確さは分からない。
- 無効化と版付きURLには別の運用条件がある。
- ミス数と最終オリジン要求数を機械的に同一視しない。
間違えやすい点
- キャッシュの問題をDNS TTLだけで解決しようとする。
- 一部の配信成功からオリジンの復旧不要と結論する。
用語解説
- ヒット率
- 対象要求のうちキャッシュを再利用できた要求の割合。
- 版付きURL
- 更新版ごとにファイル名等を変え、旧版と識別するURL。
- 認可
- 利用者がその情報や操作へアクセスしてよいかを判断すること。
関連教材
参考資料
教材データに登録された参考リンクです。リンク先の内容や更新日は提供元でご確認ください。
- https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Introduction.html
- https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Expiration.html
- https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/controlling-the-cache-key.html
- https://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/Invalidation.html
確認問題の出題・採点や学習履歴の保存にはログインが必要です。