はじめに
AWS クラウドサーバーを利用したパフォーマンス・チューニング対策用のサービス「Amazon CloudFront」を紹介します。
負荷を分散させ、大量のリクエストに対する対策を実施、通信にかかるレイテンシ(遅延)を改善します。
この記事は、サーバーの負荷を減らしてレスポンスを高速化したいというエンジニアの方のために、Amazon CloudFront の概要や機能、料金体系などについてお伝えしていきます。オンプレミスサーバーにも対応できますので、今すぐクラウドに全面移行するつもりがない方も参考になりますのでご一読ください。
Amazon CloudFrontとは?
Amazon CloudFrontは、Amazon Web Services(AWS)のCDN(コンテンツデリバリネットワーク)サービスです。コンテンツファイルをサーバーから直接配信せず、CDNを介してユーザーに配信します。キャッシュサーバーやプロキシサーバーのようなものです。どのように動作させるかは、設定により簡単に変更できます。
Amazon CloudFrontはなにができるのか?
ユーザーへのコンテンツ配信
静的ファイルおよび動的コンテンツを、ユーザーに最も近いサーバーから配信できます。サーバーは自動的に選択されるため、なにも設定する必要はありません。
ストリーミングデータの配信
ウェブページ以外にも、動画や音声のメディアストリーミングデータの配信に対応しています。Adobe Media Serverなど複数の製品に対応しています。
CDN経由のデータ送信
CDNから配信されたコンテンツからのPOSTやPUT、DELETEをサポートしています。リクエストは元のサーバーに転送され、通常通り処理されます。
コンテンツのキャッシュ
初回アクセス時に、元となるサーバーから取得したコンテンツをキャッシュします。次回以降は、キャッシュの有効期限が切れるまでキャッシュしたコンテンツを返します。設定により、全くキャッシュしないことも可能です。
レポートの作成
キャッシュが使われた割合やエラー率などの統計データをレポートします。また、よくアクセスされるコンテンツやユーザーのアクセス環境についてもわかります。
Amazon CloudFrontが解決する問題
サーバーの負荷軽減
コンテンツをCloudFrontから配信すると、サーバーへのアクセスを減らせます。動的コンテンツをキャッシュすれば、データベースの負荷軽減も可能でしょう。また、クラウドサーバーの場合は、必要なインスタンス数を減らすことができ、コスト削減につながります。
ネットワークレイテンシの低減
サーバーを国内に設置すると、海外からのアクセスはレイテンシが長くなります。CloudFrontを使って海外のサーバーから配信すれば、レイテンシを低減できます。コンテンツがキャッシュされている限り、ユーザーは安定したレスポンスを得られます。
CloudFrontを構成する要素
オリジンサーバー
コンテンツを配信する元となるサーバーを「オリジンサーバー」と呼びます。オリジンサーバーには、Amazon EC2やS3などの他に、オンプレミスサーバーも指定できます。初回アクセス時やキャッシュ失効時には、オリジンサーバーからコンテンツを取得します。
エッジサーバー
CDNを構成する「エッジサーバー」は、世界中に設置されており、ユーザーに最も近い場所からコンテンツを配信できます。日本は、東京と大阪の2箇所です。他にも、北米や南米、欧州など50箇所以上に設置されています。
CloudFrontの料金体系
ユーザーへのデータ転送
エッジサーバーからユーザーに転送されたデータ量に応じて課金されます。料金は、EC2とそれほど変わらないため、移行しても同程度の料金になるでしょう。ややAmazon CloudFrontのほうが安く設定されています。なお、エッジサーバーの設置場所により料金が異なります。
オリジンサーバーへのデータ転送
エッジサーバーからオリジンサーバーへのデータ転送量に応じて課金されます。POSTリクエストなどのデータ転送量が多くなる場合は注意が必要です。
エッジサーバーへのリクエスト
エッジサーバーへのHTTP/HTTPSリクエスト数に応じて課金されます。1万件あたり少額課金されるだけなので、それほど気にしなくてもよいでしょう。
なお、新規ユーザーは12ヶ月間、50GBのデータ送信と2,000,000回のHTTP/HTTPSリクエストが無料になります。
CloudFrontを利用する流れ
オリジンサーバーの用意
Amazon EC2やS3、オンプレミスサーバーなどでオリジンサーバーを用意しましょう。既存のサーバーがあれば、それで問題ありません。
Amazon CloudFrontの設定
CloudFrontの設定は「ディストリビューション」という単位で行います。ディストリビューションでは、オリジンサーバーの設定を行い、CDNのドメイン(URL)を取得します。
コンテンツの修正
先の手順で取得したドメインを使って、CDNから配信されるようにURLを書き換えます。または、DNSのルーティング設定を行います。
キャッシュ時間の設定
エッジサーバーが取得したコンテンツは、デフォルトで24時間キャッシュされます。これを変更したい場合には、コンテンツが返すヘッダに「Cache-Control」を追加して、キャッシュ時間を設定します。
アクセステスト
CDNのURL経由でアクセスして、コンテンツが正常に表示されれば設定は完了です。
ここではAmazon CloudFrontの基本的な手順を説明しましたが、他にも特定のパスからの配信や独自ドメインを使った配信など様々な設定ができます。
まとめ
Amazon CloudFrontは、どんなサーバーにも対応できる拡張性の高いCDNサービスです。ご自分の環境に負荷が高いサーバーがあるなら、一部だけでもCloudFrontを適用できないか検討してみましょう。グローバルなサイトを運営している場合は、レイテンシの削減にも効果的です。サイトの表示速度が早まるほど、ユーザーの満足度も高くなるでしょう。あなたのサーバーもCloudFrontで高速化してみませんか?
本ブログは、Git / Subversion のクラウド型ホスティングサービス「tracpath(トラックパス)」を提供している株式会社オープングルーヴが運営しています。
開発の効率化をしたい!もっと便利なツールを使いたい!そんなお悩みをtracpathで解決!
「tracpath(トラックパス)」は、企業内の情報システム部門や、ソフトウェア開発・アプリケーション開発チームに対して、開発の効率化を支援し、品質向上を実現します。
さらに、システム運用の効率化・自動化支援サービスも提供しています。
”つくる情熱を支えるサービス”を提供し、まるで専属のインフラエンジニアのように、あなたのチームを支えていきます。
No Comments