AWS CloudFrontとは?【AWS認定試験 SAA/DVA/CLF対策】
本ページでは、AWSのCDNサービスであるAWS CloudFrontについて、初心者向けにその特徴や用途を紹介します!
私自身が「初めて勉強したとき、これを知りたかった!」と感じた内容を中心にまとめていますので、ぜひ最後までご覧ください!

AWS 認定クラウドプラクティショナー
(AWS Certified Cloud Practitioner, CLF)
AWS 認定ソリューションアーキテクト アソシエイト
(AWS Certified Solutions Architect – Associate, SAA)
AWS 認定デベロッパー アソシエイト
(AWS Certified Developer – Associate, DVA)
CloudFrontの概要
AWS CloudFront(クラウドフロント)は、AWSが提供するCDN(Contents Delivery Network、コンテンツ配信ネットワーク)サービスです。
CloudFrontについて、先にざっくり言ってしまうと…
となっています!

この説明から察した方がいらっしゃるかもしれませんが、速さ・安定性を気にしなければ、CloudFront無しでもシステムとして一応成り立つことが多いです。ただし、特に下記のような場合には、ほぼ必須なサービスとなります。
- 世界中にユーザーがいて、みんなに速く配信する必要がある
- 動画のような重たいデータを配信する必要がある
ユーザー目線で、配信が速くなると嬉しいのはもちろんですが、サービス提供者目線でも嬉しいことがあります。それは、大元のサーバー(オリジンサーバー)とユーザーの間にCloudFrontが挟まることで、オリジンサーバーの負荷が低減し、より安定した配信を実現できることです。

アイコン

こちらが、アーキテクチャ図で用いられるCloudFrontのアイコンです。
外側の丸は地球を表しており、その中の小さい丸は配信のための各拠点を表しているのだと思います。
「各拠点が結ばれてネットワークを形成し、これによって世界中に速く配信する」というCloudFrontの仕組みを表しているんですね。この仕組みについては、以下でもう少し詳しく解説します。
CloudFrontの仕組み
AWSでは、世界中に210か所以上に、配信を高速化するための地方拠点(エッジロケーションと呼びます)があります。このエッジロケーションに配信用のデータを一時的に溜めておき、そこから各ユーザーに配信します。これによって、大元のオリジンサーバーからの配信回数が減り、負荷低減に繋がります。

CloudFrontに限らず、「よく使うデータを一時的に溜めておいて、次に備える」ことを「キャッシュする」と言います!
また、エッジロケーションが世界中にあるというのがポイントとなっています。もしオリジンサーバーが日本にあるけど、アメリカにデータを配信したい場合、アメリカの一番近くのエッジロケーションから配信します。このような仕組みによって通信時間が削減され、世界中どこにでも素早い配信が可能になります。

CloudFrontのメリット
世界中への配信を高速化
上で解説したように、世界中にあるエッジロケーションから配信することで、配信を高速化しています。特に恩恵が大きいのは、動画のようなサイズ量の大きいコンテンツを配信する場合です。

例えばYouTubeも、CDNを使うことで動画を素早く配信しているんですよ。
ただし、YoutubeはGoogleのサービスなので、AWS (Amazon)の CloudFrontを使っている訳ではなく、Google独自のCDNを使っています。

オリジンサーバーの負荷低減により、コストを削減
CloudFrontを挟むことによってオリジンサーバーの負荷低減になることは上でも説明しましたが、これによって安定性向上に繋がることはもちろん、オリジンサーバーを動作させる回数が減るので、結果的にコスト削減が期待できます。
ただし、CloudFrontの利用自体にもお金がかかるため、「CloudFrontを導入することで必ずコストが安くなる」という訳ではない点に注意してください。
CloudFrontのデメリット(注意点)
キャッシュの必要性を考慮した上で、設計が必要
どんなデータでもCloudFrontにキャッシュする(溜めこむ)のが良いかと言われると、そうではありません。場合によっては古いデータがキャッシュされてしまい、ユーザーに新しいデータが届かなくなるといった不具合にも繋がります。
CloudFrontでは、データごとに「キャッシュする/しない」あるいは「キャッシュを保持する時間」を設定することができます。使いこなすには、この設定を上手に行うことが欠かせません。

代表的な使い方
AWSの他サービスと組み合わせた具体例を、下記で紹介します。
API Gatewayと組み合わせて、APIレスポンスを高速化

API GatewayとLambdaによるサーバーレスアーキテクチャの例です。高速化が期待できるのはもちろんですが、API GatewayもLambdaも使った分だけお金がかかる従量制ですので、コスト削減も期待できます。
API GatewayやLambdaについては、ぜひこちらも参考にしてください。


S3からの静的コンテンツの配信

「いつ、誰に対しても表示する内容が同じコンテンツ」のことを静的コンテンツと呼びます。この静的コンテンツこそ、CloudFrontと相性の良いデータです。

いつも同じデータを配信するから、キャッシュしておくと効率良く配信できますよね。
逆に、ユーザーやタイミングごとなどに内容が変わるデータを動的コンテンツと呼び、これはCloudFrontと相性が良くないです。
静的コンテンツの代表的な置場がS3であり、S3と組み合わされることも多いです。S3については、ぜひこちらも参考にしてください。

まとめ
ここまで、AWS CloudFrontの概要や代表的な使い方についてまとめました。
CloudFrontは、Webサイトの画像や動画などを、世界中のユーザーに速く・安定して配信するためのCDNサービスです。キャッシュの設定に気を付ける必要はありつつも、導入することでたくさんメリットを得られるサービスです。様々なシステムのアーキテクチャ図にも非常によく出てきます。
静的コンテンツをよく配信するサービスの場合は、ぜひ導入を検討してみてください!
