20120611 aws meister-reloaded-cloud-front-public
TRANSCRIPT
AWSマイスターシリーズ ~CloudFront ~
2012年6月11日 荒木 靖宏 (@ar1 ) プリンシパルソリューションアーキテクト
RTMP (Flash) と HTTP / HTTPS
コンテンツキャッシュ期限を0にも
Adaptive Bitrate Streaming
Private Content
Programmatic Invalidation
業界標準のアクセスログ
AWS Management Console
全機能を制御できるAPI
主要な仕様
2
Amazon CloudFront
コミットメントなし
バンド幅、転送量、 期間など
オリジナルコンテンツにはHTTPでアクセス
S3や、Webサーバ
FLVストリーミングも付加料金なし
FLV ファイルはS3上に配置
その他S3との密接な連携
ログやS3クライアント
他社と比べたときのCloudFrontの特徴
ゲーム
ソフトウェアダウンロード
メディア配信 – オンデマンド & Live
写真共有
ウェブサイト一般
CloudFrontの利用例
4
問題点: FCバルセロナは試合中継の日のピークト
ラフィックの対応に多くの時間とコストをかけすぎていた 解決策: AWSの伸縮性(Elastic) と従量課金モデルにより解決 FCバルセロナのウェブサイト、ECサイトおよびモバイル向けアプリケーションをEC2, CloudFront, RDS, Route 53などで構築・運用 ビジネス上の効果: 試合日の対応の簡素化及び効率化 商品リリースまでの時間を半分に削減
FCバルセロナ
6
ケーススタディ
CloudFrontの利用メリット
• いつでも利用開始可能
• 価格
– CloudFrontの転送課金はEC2向けのネットワーク課金より安価
–実際の転送量とリクエスト数に応じた支払い
– エッジロケーション毎に料金が異なる
• 日本は0.201米ドル/GBから
• コミットしていただければディスカウントあり
– Reserved Capacity
Reliable
• それぞれの地域内で複数のロケーションで冗長化
• 24x7ではたらく専任のチーム
• 多数の利用実績
• 99.9% SLA
価格
9
Dynamic Site Acceleration
10
動的コンテンツ(dynamic content)とは?
• インタラクティブ
• パーソナライズ
• News • Weather • Sports • Social media • Advertising
11
Elastic Load Balancing
動的サイトにおけるCloudFront利用は一部に限られていた
Amazon CloudFront static.mysite.com
12
Dynamic Content
Amazon EC2
Static Content
Amazon S3
Your Users
www.mysite.com
13
Dynamic Site 機能 • Multiple Cache Behaviors NEW!
• Multiple Origin Servers NEW!
• Origin Connection Protocol
• Viewer Connection Protocol
• Minimum Expiration Period NEW!
• Query String Parameters NEW!
• Private Content
• Console Support NEW!
Elastic Load Balancing
Amazon CloudFront www.mysite.com
今日からの動的サイトの構築
14
Dynamic Content
Amazon EC2
Static Content
Amazon S3
Your Users
ユーザはまず CloudFront へ 最低レイテンシへの誘導 TCP最適化 Persistent Connections
CloudFront から Origin 動的/静的のコンテンツわけ
オリジンへのPersistent connections 経路のモニタリング
15
Multiple Cache Behaviors
• Query Stringsをオリジンに飛ばすかどうかなどを制御
• 登録できる制御パターンは10まで。デフォルト値の設定も必要。
• 最初にマッチしたものが使われる
16
Multiple Origin Servers
• 複数のオリジンが使える。
• S3 bucket, an ELB, an EC2 instance, a custom origin, etc.
• 10オリジンまで. それぞれ”Origin ID”が付与される
Amazon Confidential
17
Minimum Expiration Period
• minTTL はAPIとコンソールから
• minTTL は0秒にも設定可能
• 使うヘッダ
• If-Modified-Since (クライアントから)
• Cache-Control: no-cache | s-max-age=0 | max-age=0
• Expires: <now or in the past>
• Pragma: no-cache (not in the spec, but for HTTP 1.0 backward
compatibility)
• 一切cacheしないためには、Cache-Control: no-store | private、さらにminimun TTLを0にする
ヘッダの利用が必須
18
Query String Parameters
• オプション機能として提供。有効ににすると、Query Stringもすべて含んだfull URLがオリジンに送られる。
• ロギング機能を有効にしていれば、Query Stringは記録される。
• 注意事項
• Query Stringの順番、大文字小文字に注意
• Private Content機能を使うときにCloudFrontで予約
• Expires, Policy, Signature, and Key-Pair-Id are reserved query
parameters
CloudFrontはどう動いているのか
19
CloudFront’s Global Presence
20
Europe
Amsterdam
Dublin
Frankfurt (2)
London (2)
Milan (2)
Paris
Stockholm
Asia
Hong Kong
Osaka
Singapore (2)
Tokyo
South America
Sao Paulo
North America
Ashburn, VA (2)
Dallas, TX
Jacksonville, FL
Los Angeles, CA (2)
Miami, FL
Newark, NJ
New York, NY (2)
Palo Alto, CA
Seattle, WA
San Jose, CA
South Bend, IN
St. Louis, MO
Amazon Confidential
30のエッジロケーション(2012年5月末)
CDNを使用しないときの動作
Web
サーバ
www.example.comにどうアクセスする?
1. クライアントは使用しているDNS解決用サーバに、www.example.comのアドレスを問いあわせる
2. www.example.comがCNAMEレコードならば、さらにIPアドレス(Aレコード)が得られるまで問いあわせる
3. IPアドレスに向けてHTTPでアクセスする
DNSとHTTP
ユーザ local DNS
1
2
3
example.com DNS
CloudFront使用時のHTTP配信
様々なIPアドレスが使用される
CloudFront
1. クライアントは使用しているDNS解決用サーバに、cloudfront.example.comのアドレスを問いあわせる
2. cloudfront.example.comはXXXX.cloudfront.netのCNAME 3. XXXX.cloudfront.netのIPアドレスを問いあわせ。 4. cloudfront.netのDNSが地理情報に応じたCloudFrontのIPアドレスを返す 5. CloudFrontのIPアドレスに向けてHTTPでアクセスする
DNSとHTTP(CloudFront使用時)
ユーザ local DNS
1 2
3
example.com DNS
cloudfront.net DNS
地理情報
4
5
CloudFrontの詳細
25
EC2など、自分で運用しているサーバを使う場合
動的なコンテンツ
Ajaxなどクロスドメイン通信が必要なもの
S3を使う場合
FLVファイルの配信
• Adobe Flash Media Server 3.5相当
• rtmp://[domain_name]/cfx/st/[filename]
静的ファイル
• 画像、テキスト、CSSファイル等
オリジンサーバの使いわけ
全てのログファイルはS3に保存
クライアントからのアクセス記録は全エッジロケーションから24時間以内に収集
オリジンフェッチを使う場合は、S3のバケットを作成する
ログをとらないことも可能
ログの形式
1時間毎もしくは、50MB毎の分割
例:
• mylogs.s3.amazonaws.com/myprefix/EMLARXS993KSTG8.2009-03-17-20.RT4KCN4SGK9.gz
ログファイル
課金はトラフィック量とリクエスト数にかかります
0.0095USD / 1万 HTTP request
0.0130USD / 1万 HTTPS request
特定のエッジロケーションだけ使うようにはできない。
エンドユーザの位置次第です
オリジンフェッチは、それぞれのエッジロケーションから個別にアクセスします
利用の注意点
CNAMEはCloudFrontの設定時に設定したものと一致する必要がある
一致しない場合はinvalidとして処理される
カスタムドメイン使用上の注意(1)
HTTPSの場合はカスタムドメインを使用できない
無理に使うと警告されます
カスタムドメイン使用上の注意(2)
Route53を使った場合のドメイン名だけのCloudFrontは指定できない。
カスタムドメイン使用上の注意(3)
Cache-Controlヘッダ、Expiresヘッダを使用
例
Cache-Control: max-age=3600
Expires: Tue, 05 Oct 2011 21:00:00 GMT
最小時間は0秒
頻繁に更新する場合には、URL(ファイル)名変更を推奨
ファイルの破棄リクエスト
同時に3リクエストまで
1リクエストで1000URLまで
キャッシュの制御 ヘッダでの制御が必須
ストリーミング
エンドユーザが視聴後にファイルが残らない
部分再生をした場合には、再生部分のみ配送(=低料金)
HTTP配信
オフライン再生などのために、ローカルコピーを保存してもらいたいときに使用する
部分再生の場合であっても通常はファイル全体が配送される
動画配信
アドビでFMS on AWSを購入
http://www.adobe.com/go/learn_fms_aws_order_en.
https://s3.amazonaws.com/cloudfront-live-jp/live-http-streaming-using-cloudfront.txt
ライブストリーミング
CloundFrontはContent Delivery Networkです
Web(HTTP,HTTPS), Flash streaming (RTMP)
使ったぶんだけの支払い
コミットメントなし
オンラインだけでいつでも始められます
オリジンサーバは選択可能
Amazon S3 (Flash streamingの場合は必須)
カスタマオリジンサーバはHTTP(S)が届けばどこでもよい
エッジロケーションは30箇所以上
CloudFrontに関するまとめ
Apacheでの
動的ページを設定してみる
たとえばこんなの
http://sp1.cedec.araki.net/smokeping/images/WorldRegions/NRT_last_10800.png
# a2enmod headers
# vi httpd.conf
# /etc/init.d/apache2 reload
Cache-Controlヘッダをつける
mod_headers モジュール
mod_expires モジュール等おすきなものでどうぞ
デモ
CloudFrontを設定してみる
2つ目のオリジン追加
CloudFrontをはじめるにあたって
57
利用のメリット
• 低レイテンシ レイテンシにもとづいてエンドユーザを誘導
• 広帯域 ストリーミングメディアや大ファイルダウンロード
• リライアブル 単一障害点なし。SLAあり。
• スケーラブル 大規模な利用でも世界中のネットワークが利用可能
• グローバル 30のエッジロケーション
• Cost-effective つかったぶんのお支払い。最低利用額なし。コミットなし。
• 簡単 セルフサービスで開始可能。Webコンソール、サードパーティツール、SDKあり。
Amazon Confidential