導入
東京にあるサーバーのコンテンツを、ブラジルの利用者がそのまま読み込むと、地球の裏側までデータが往復するため表示が遅くなります。世界中の誰にとっても速く見せるにはどうすればよいでしょうか。
説明
Amazon CloudFrontは、AWSが提供するCDN(Content Delivery Network・コンテンツ配信ネットワーク)サービスです。画像・動画・Webページといったコンテンツを、世界中に多数配置されたエッジロケーションにキャッシュ(一時保存)しておき、利用者から見て最も近い拠点から配信することで、表示速度を高速化します。
コンテンツの本来の保存元はオリジンと呼ばれ、S3・EC2・ALB(ロードバランサー)などを指定できます。
sequenceDiagram
participant U as 利用者(ブラジル)
participant E as 最寄りのエッジロケーション
participant O as オリジン(東京のS3)
U->>E: コンテンツを要求
alt キャッシュ済み
E-->>U: キャッシュから即座に返す
else 未キャッシュ
E->>O: オリジンへ取りに行く
O-->>E: コンテンツを返す
E-->>U: 配信+以降のためにキャッシュ
end
CloudFrontを使う利点は、単なる高速化だけではありません。
- オリジンの負荷軽減 … 多くのリクエストをエッジ側のキャッシュで処理できるため、オリジンサーバーへのアクセスが減る。
- TLSによる暗号化配信 … 利用者との通信をHTTPSで保護できる。
- DDoS対策との連携 … AWS Shieldと組み合わせることで、大量アクセスによる攻撃(DDoS攻撃)の影響を緩和できる。
読んでみよう
「CloudFront=世界中のエッジロケーションでキャッシュ配信するCDN」「オリジンはS3やEC2などコンテンツの本体を持つ場所」という関係を押さえておきましょう。