- CloudFrontについて調べているけど専門用語が多くてわかりにくい
- CloudFrontのメリットがよくわからない
CloudFrontに関して、このように悩んでいませんか?
AWSでWebサービスを公開するうえで、CloudFrontは第一候補のサービスです。
また、CloudFrontを利用しないままWebサイトを配信していると、アクセス集中によるサーバーのダウンや、悪意のある攻撃者からの攻撃などの被害に遭う可能性があります…。
そこで、この記事では、現役のAWSエンジニアの私が、CloudFrontの基本的な知識を、専門用語をできるだけ使わずにで初心者にもわかりやすく解説しています。
この記事を読めば、CloudFrontについて理解でき、今後のAWS学習を効率的に進めることができるようになりますよ。
初心者にもわかりやすいように、他サイトで乱用されている専門用語は使っていませんし、用語の解説も載せています!
以下の記事では、AWSを無料で勉強する方法をまとめているので、あわせて参考にしてください。
こちら記事でも紹介していますが、侍テラコヤ
それでは、さっそくCloudFrontについて解説していきます!
この記事の内容は以下の書籍を参考にしています。
CloudFrontとは
CloudFrontは、Webサイトなどを高速で効率的に公開することができるAWSのサービスです。
Webサイトを公開したい場合、一般的には専用のサーバーを用意して、ユーザーはそのサーバーにアクセスします。
しかしながら、これだと以下のような課題があります。
- サーバーにアクセスが集中してしまい、処理が重たくなる
- ユーザーがアクセスするたびに何度も同じ処理を行う必要があるため、非効率
- サーバーが物理的に遠い場合、アクセスに時間がかかる
- 直接サーバーにアクセスされるので、セキュリティ的に不安がある
これらを解決してくれるのがCloudFrontです。
CloudFrontは、CDN(Contents Delivery Network)と呼ばれる一般的な技術のAWS版です。
CDNの詳細はこのあと説明しますが、ELBやS3などのAWSの他サービスと強力に連携できるのがCloudFrontnならではの強みです。
CDNとは
先ほども書きましたが、CloudFrontはAWSでCDNと呼ばれる機能を提供するサービスです。
CDNとはContents Delivery Networkの略で、つまり「コンテンツを配信するネットワーク」を指します。
もっと具体的には、「Webサイトなどのコンテンツをユーザーに届けるために最適化された中継サーバー」といった感じです。
「CloudFrontとは」でも書きましたが、従来のWebサーバーを使ったWebサイトの公開だと、サーバーの負荷や応答速度に課題がありました。
一方でCDNでは、ユーザーにコンテンツを配信するために最適化された(複数箇所に設置されたサーバー)中継サーバーを利用するため、ユーザーは物理的距離が近い中継サーバーへアクセスされ、高速で応答することが可能です。
また、キャッシュを利用することで、おおもとのWebサーバーにアクセスが集中するのを防いでくれます。
キャッシュについては次の章で詳しく解説します。
さらには、ユーザーは必ず中継サーバーに対してアクセスするため、おおもとのWebサーバーに直接アクセスすることを防ぎ、悪意のある攻撃から守ることも可能です。
キャッシュとは
キャッシュとは、情報を一時的に保存しておくことです。
例えば、みなさんは九九を覚えていますよね?
実際に8×9の計算をする場合、本来であれば8を9回足し算する必要があります。
しかし、毎回そのようなことをしていては効率が悪いので、8×9=72と記憶しているわけです。
この記憶こそがキャッシュです。
ネットワークの世界でも、何度も同じ情報を利用することがあるので、それをキャッシュとして覚えてきます。
CDNでは、中継サーバーにキャッシュを貯めておくことで、ユーザーは中継サーバーにアクセスするだけで必要な情報が取得できます。
キャッシュを利用することで、高速に中継サーバーから応答できるだけでなく、中継サーバーにキャッシュがない場合だけおおもとのWebサーバーへアクセスするので、おおもとのWebサーバーへのアクセス集中を防ぐことも可能です。
CloudFrontの機能と利用する目的
CloudFrontの概要とCDNについて説明しました。
続いて、CloudFrontの機能として、実際の利用シーンを紹介します。
AWSの他サービスとの連携
具体的な利用例の前に、CloudFrontによるAWSの他サービスとの連携について説明します。
CloudFrontはAWSのサービスなので、当たり前ですが他のAWSサービスと簡単に連携できるのが特徴です。
CloudFrontと連携できるサービスには、以下のようなものがあります。
- S3
- EC2
- ELB
これらのサービスでWebサービス等を作成して、CloudFront経由で公開することが可能です。
また、以下のようなAWSのセキュリティサービスとの連携も可能です。
- AWS WAF
- WAS Shiled
これらのサービスとの連携により、セキュリティのリスクを減らし、安全にコンテンツを配信することができます。
さらに、AWS ACMとの連携で、簡単にSSL/TLS認証(通信内容を暗号化しセキュリティ性能を高める仕組み)を実現できます。
本来であれば、これらのセキュリティ対策はさまざまなサービスを連携させる必要があり、時間や費用がかかるのですが、CloudFrontではAWSサービスと連携することで、効率的に実現することが可能です。
静的Webサイトの配信
CDNの説明でもありましたが、CloudFrontはWebサイトの中継を行ってくれます。
Webサイトには、ホームページのようにいつも同じページが表示される静的Webサイトと、ネット通販サイトのように、時間によって内容が変化する動的Webサイトがあります。
CloudFrontは、静的なWebサイトの配信に向いています。
静的Webサイトの場合、いつも同じ情報を表示するので、中継サーバーにキャッシュとして保存できるためです。
AWSでは、S3に保存したHTMLファイルを静的Webサイトとして公開する機能がありますが、CloudFrontのおおもとのサーバーをS3として、静的Webサイトを公開するという使い方が可能です。
動画の配信
CloudFrontでは、録画済みの動画やライブ動画のストリーミング配信が可能です。
ユーザーは物理的に近い中継サーバーを通して動画を見れるので、最小限の遅延で動画を見ることができます。
動的コンテンツの配信
CloudFrontでは静的Webサイトだけでなく、動的なコンテンツ(サイトだけでなくさまざまなササービスを提供できるのでコンテンツという記載とします)も配信できます。
動的コンテンツの場合、毎回表示内容が変わるためキャッシュの利用はあまりできませんが、中継サーバーへの高速なアクセスに加え、直接おおもとのサーバーへのアクセスを避けることができるためセキュリティ性能が高いです。
CloudFrontの用語
ここまで、CloudFrontの機能について説明しました。
ここからは、もう少し詳しいところに踏み込んで、CloudFrontで使われる用語について説明します。
エッジロケーション
エッジロケーションとは、これまで「中継サーバー」と呼んでいたものです。
AWSではエッジロケーションと呼ばれるサーバーが各地にあり、ユーザーからもっとも近いエッジロケーションへアクセスを振り分けることで、遅延を少なくしています。
Origin(オリジン)
オリジンとは、これまで「おおもとのサーバー」と呼んでいたものです。
CloudFrontでは、オリジンへのアクセスをエッジロケーションが中継するという感じです。
CloudFrontのオリジンには、「AWSの他サービスとの連携」でも説明したように、S3やEC2、ELBなどを設定できます。
Viewer(ビューワー)
CloudFrontでは、Webブラウザなどのクライアント(サーバーにアクセスするひと)のことをViewerといいます。
Viewerとは日本語で「見る人」なので、そのままですね。
CloudFrontの設定をしていて、Viewerという用語を見かけたら、単純にアクセス元のことなんだなと思えばよいです。
Distribution(ディストリビューション)
ここからは、これまであまり説明してこなかったCloudFront独自の用語です。
Distributionとは、コンテンツ配信の設定そのものです。
つまり、CloudFrontで何かを配信するように設定したひとつひとつをDistributionといいます。
Distributionとは「配信」という意味なので、これもそのままですね。
CloudFrontでは、複数の配信設定をすることができます。
例えば、Aという設定ではホームページを配信し、Bという設定では動画を配信する、などです。
このときのAとかBとかをDistributionといいます。
S3のバケットのようなイメージです。
なので、CloudFrontでは、まずはDistributionを作るところから始まります。
Behaviour(ビヘイビア)
Behaviourとは、キャッシュの動作設定のことです。
Behaviorは日本語で「振る舞い」を指しますが、CloudFrontのBehaviourではキャッシュ動作の振る舞いを設定します。
キャッシュは、いつまでも保存しておけばいいかというと、そうでもありません。
頻繁にアクセスされる情報はずっと持っておいたほうがいいですが、あまりアクセスされない情報はキャッシュしておいても容量が無駄になります。
それならば、キャッシュせずに毎回オリジンへ中継したほうが効率的です。
このように、CloudFrontのBehaviourでは情報によってキャッシュの保存期間を細かく決めることができます。
このキャッシュの保持期間をTTL(Time To Live)といいます。
この情報はあまりアクセスされないからTTLを10秒にする、とかこの情報は頻繁にアクセスされるからTTLを1日にする、といった感じです。
まとめ
以上、CloudFrontについて解説しました。
CloudFrontの特徴をまとめるとこんな感じです。
- おおもとのサーバー(オリジン)へのアクセスを、ユーザーからの距離が近い中継サーバー(エッジロケーション)が中継してくれるので、高速な配信が可能
- エッジロケーションでキャッシュを貯めておき、ユーザーへキャッシュを返すことで、オリジンへのアクセスを低減できる
- AWS WAFやAWS ShieldといったAWSの強力なセキュリティサービスと連携し、セキュリティ性能を高めることが可能
- AWS ACMと連携し、簡単にセキュリティ性能が高い通信(SSL/TSL通信)が可能
静的Webサイトや動的コンテンツの配信を高速に効率的に、セキュアに実現したい方は、ぜひCloudFrontの利用を検討してください!
なお、 CloudFrontに関しては侍テラコヤ
\侍テラコヤの無料プランは無期限だから今すぐ登録してもOK!/
メールアドレスだけで10秒で登録できちゃいます!
記事の中で不明点や指摘などがあれば、気軽にコメントやお問い合わせください。
Twitter/X(https://twitter.com/enjunior_blog)もやっているので、DM等も歓迎です!
それでは、引き続きAWSの勉強がんばりましょう!
コメント