概要
「クラウドフロント?あー、なんかキャッシュするやつですよねw」
AWSをかじりたての私が何度も口にした言葉です。
業務で使用するうちに少し解像度が上がってきたので、忘れないようにメモしておきたいと思います。
AWS CloudFrontとは
CloudFrontはAWS上におけるCDN(Contests Delivery Network)サービスです。
サーバーなどの前面に配置して、コンテンツ(画像・HTMLなど)をキャッシュしておく役割があります。
例えば、CloudFront→S3といったようなインフラ構成の場合、CloudFrontにキャッシュがない場合はS3にコンテンツをとりにいきますが、キャッシュを保持している場合はCloudFrontがコンテンツを返却してくれます。
また、コンテンツがキャッシュされていない場合でも、今回返却されたコンテンツをキャッシュするので、次回のアクセス時にはキャッシュを利用することができます。
用語たち
CloudFrontを使用する上でよく聞く使用する用語たちです。
オリジン
CloudFrontの背面に待ち構えているサーバー(オリジンサーバー)のことです。
上記の例だと、S3がオリジンに当たります。
S3以外にも、ALB(Application Load Balancer)などのサービスを配置することができます。
エッジロケーション
CloudFrontを含むCDNサーバーは世界中に配置されています。
この世界中に配置されたサーバーをエッジサーバーと言いますが、CloudFrontの世界ではエッジロケーションと言います。
要するに、世界中にいっぱいあるCloudFrontのキャッシュ用サーバーがエッジロケーションです。
なぜCloudFrontを使用すると嬉しいのか
サーバーへの問い合わせがなくなる分、コンテンツが返却される速度が上がります。
それに伴い、同時にサーバーへの負荷を減らすこともできます。
また、レイテンシー(遅延)の問題を解決することもできます。
例えば、サービスを提供するサーバーが日本に設置されているとします。
この場合、日本からのアクセスと、アメリカからのアクセスではもちろんアメリカからのアクセスの方が時間がかかります(地理的に遠いので)。
このように、地理的に遠い場所からのアクセスではレイテンシーが大きくなってしまいます。
しかし、CloudFront含むCDNは、最寄りのエッジロケーションにキャッシュを取得しにいくため、地理的な要因によるレイテンシーの増大を阻止することができます。
(おまけ)ファイヤーウォールとしての役割
CloudFrontはセキュリティ向上にも貢献します。
CloudFrontにはWAF(Web Application Firewall)を設定することができます。
WAFはOSI参照モデルのアプリケーション層で動作する機能で、リクエスト内容を検査した上で、特定の悪意がある(と思われる)通信をブロックします。
本記事では詳しくは触れませんが、基本設定ならクリック一つで設定できるような簡単なものです。
感想
インフラってイメージをつかむまでがなかなか難しいです...
「サーバー」と聞くと強いパソコンが1台存在しているような気がしてCDNやCloudFrontのイメージがつかめずにいましたが、世界中にいっぱいいるやつなんだと理解したらなんとなくイメージしやすくなりました。