AWS Cloud Front からCDNについて考える

はじめに

AWS(Amazon Web Service) のCloud Frontについて、解説します。
Cloud Frontと聞いても、あまりピンと来ないかもしれません。

特にAWSを始めたばかりの入門者にとって、AWSの公式サイトでCloud Front について調べても、あまり興味を抱くことは無いかもしれません。

ざっくり言ってしまうと、Cloud Front とはAWSにおけるCDNです。
その為、Cloud Frontの説明の前に、CDN(Contents Delivery Network)について、理解しておく必要があります。

CDNとは、コンテンツデリバリーネットワークという名の通り、コンテンツをユーザーに配信するための仕組みなのですが、単純にサーバーから、コンテンツを配信するのとは違い、オリジンサーバーがもつコンテンツを世界各地に点在するキャッシュサーバーにキャッシュとして持たせることで、アクセス負荷の分散や閲覧速度の向上、そしてセキュリティ対策としての役割を担います。現代のWebを支える極めて重要な技術の1つとなっています。

CDNとは

なぜ、CDNが重要なのか

もし、あなたが配信するWebサーバーが爆発的な人気を獲得し、世界中のユーザーからアクセスされる状況になったとします。当然、Webサーバーには、非常に高い負荷がかかり、アクセス出来たとしても、サイトの表示が遅く、著しくレスポンスが低下している為、ユーザーはイライラしてサイトを離れてしまいます。最悪の場合、サーバーがダウンして長時間閲覧不可の状態となってしまうでしょう。

サイトの表示速度向上は、ユーザーのストレス低減の為だけではなく、SEO対策としても非常に重要です。

インターネット検索最大手 Google はSpeed Update という仕組みで、レスポンスの速いサイトを検索上位にするようなアルゴリズムを用いています。

Webの世界で人気を勝ち取る為には、コンテンツの中身だけでなく、常に安定したサービスを継続できる信頼性と可用性が求められているのです。

このような問題に対し、サーバーやネットワークを冗長構成にして、対処する事ができますが、その分コストと手間が掛かってしまいます。

キャッシュとオリジン

CDNを利用した場合、ユーザーをコンテンツを保持するオリジンサーバーに直接アクセスさせずに、コンテンツのキャッシュをもつキャッシュサーバーにアクセスさせます。

キャッシュサーバーはコンテンツを一定の間隔でオリジンサーバーから取得し、ユーザーに配信する事によりオリジンサーバーに負荷が集中する事を防ぎます。また、キャッシュサーバーは通常、複数のサーバーで構成されているため、負荷分散させてサーバーダウンを防ぎます。

万が一、1つのキャッシュサーバーが高負荷でダウンしても、その他のキャッシュサーバーで代替えできるため、サービスダウン自体を極力防ぐ事ができます。

また、ユーザーがアクセスした地域に、より近いキャッシュサーバーが選択される仕組みの為、アクセス速度も向上します。

そして、コンテンツの更新時は、オリジンサーバーだけ更新すればよい為、手間とコストの両方を軽減する事ができます。

セキュリティ対策として

上記で説明した通り、CDNは高い可用性の実現に大きく貢献します。しかし、もう1つ重要な点はDos攻撃の防御に役立つという点です。

Dos攻撃とは、サイバー攻撃の手段の1つです。攻撃者が対象のサーバーに対し、高負荷となるような攻撃を仕掛け、サーバーをダウンさせます。この攻撃の厄介なところは、やろうと思えば誰でも出来てしまう点です。

それは、F5攻撃とも言われますが、Webサイトを閲覧しているとき、F5キーを押すとサイト表示のリロードが行われ、再度Webサーバーにアクセスする事を利用した攻撃です。

これを、同時期に複数人が連続して特定のサイトをターゲットにして行う事で、対象のサーバーは処理に耐えられず、ダウンしてしまう事があります。

そこで、CDNを導入していれば、攻撃を受けるのはオリジンサーバーではなく、キャッシュサーバーとなります。

上記で記載した通り、キャッシュサーバーは複数台存在している事から、Dos攻撃の身代わりとなり、その負荷を分散させる事でサービスダウンを極力防ぐ事が出来ます。

Cloud Frontについて

上記の事から AWSの利用におけるCDNの導入、つまりCloud Frontが重要である事がご理解頂けたと思います。

Cloud Frontを作成する場合は、AWSのマネジメントコンソールで、Cloud Front と検索し、CreateDistributionボタンをクリックします。

Get Startedボタンをクリックし、Create Distribution の画面を表示します。

Origin Domain NameにオリジンとなるS3やELBを設定する事が出来ます。また、TTL値で、キャッシュの有効期限を定める事が出来るようになっています。

最後にCreate Distributionボタンをクリックし、StatusがDeployed となった事を確認したら、Domain Nameを確認します。ブラウザで、その Domain Nameにアクセスし、ページが表示されたらOKです。

まとめ

Cloud Front を利用することでCDNを導入し、それがシステムの可用性とセキュリティの向上につながる事を説明させて頂きました。

Cloud Frontを利用するほど、大規模なWebサイトを扱う事は少ないかもしれませんが、知識だけでも押さえておく事で、AWSの理解につながるのではないでしょうか。

最後までご覧頂き、ありがとうございました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です