こんにちは、ウェブラバーです。
Amazon CloudFrontはご存知ですか。
AWSが提供する高速・高パフォーマンスなコンテンツ配信サービス(CDN)です。
世界中にエッジサーバが配備されており、ユーザを最寄りのエッジサーバに誘導することで高速な配信を、またコンテンツをエッジサーバでキャッシュしてオリジンサーバの負荷を減らすことで安定した配信をすることができます。
サーバーの負荷を減らしてレスポンスを高速化したいというエンジニアの方のためにはもってこいです。
オンプレミスサーバーにも対応できます。
Amazon CloudFrontはなにができるのか?
ユーザーへのコンテンツ配信
静的ファイルおよび動的コンテンツを、ユーザーに最も近いサーバーから配信できます。サーバーは自動的に選択されるため、なにも設定する必要はありません。
ストリーミングデータの配信
ウェブページ以外にも、動画や音声のメディアストリーミングデータの配信に対応しています。Adobe Media Serverなど複数の製品に対応しています。
CDN経由のデータ送信
CDNから配信されたコンテンツからのPOSTやPUT、DELETEをサポートしています。リクエストは元のサーバーに転送され、通常通り処理されます。
コンテンツのキャッシュ
初回アクセス時に、元となるサーバーから取得したコンテンツをキャッシュします。次回以降は、キャッシュの有効期限が切れるまでキャッシュしたコンテンツを返します。
設定により、全くキャッシュしないことも可能です。
CloudFrontの振り分けはL7ロードバランサ
一般的なロードバランサ機器は、単に特定のIPアドレスとポートにきた通信をL4スイッチの機能だけではなく、httpのプロトコルの中身をみて振り分けを行うL7スイッチを利用することができるのが一般的です。
特によく使うのがURLのディレクトリパスでWebサーバを振り分けすることが多い。これは機能毎にWebサーバが異なっているが同じドメインでアクセスするような場合がある。
ELBではパスなどでの振り分け設定ができない
ELB設定のメインの部分はリスナーの設定で受付プロトコルとポート、EC2インスタンス側のプロトコルとポートしかない。
CloudFront で URL振り分けをする
http://example.com/aaa のアクセスはサーバー(群)A
http://example.com/bbb のアクセスはサーバー(群)B
といったかたちで処理を分けたい場合、通常はL7ロードバランサの機能を利用しますが
ELB にはURLで振り分ける機能がありません。
代わりに CloudFront に オリジンやビヘイビアを複数設定することでL7 スイッチとして使うのが手軽で運用も楽です。
まとめ
CloudFrontはキャッシュサーバだけでなくいろいろな機能がありますね。