狠狠撸

狠狠撸Share a Scribd company logo
Update 2010/7/21
瞬間?アクセス対策のための
CloudFront活?
2015/07/04 innovation EGG
株式会社ロックオン 三原俊介
1
注意事項2
本資料は、2014年9?の事例をご紹介しております
CloudFrontの最新仕様をご確認したい場合は、公
式のドキュメントをご確認下さい。
<参考>
http://aws.amazon.com/jp/cloudfront/
http://aws.amazon.com/jp/documentation
/cloudfront/
Update 2010/7/21
??紹介
3
2012.04 株式会社ロックオン?社
インフラユニット
現在 匠部所属
主にインフラ全般、開発環境の改善、
ロックオフの管理?などなどやってます
三原 俊介– Shunsuke Mihara
??紹介4
株式会社ロックオン
会社紹介5
2001.6 設?
2014.9 マザーズ上場
現在 従業員約60名 アメリカ、ベトナムに?会社
今回持ち帰って頂きたいこと6
サーバをクラウドに移?させることなく、アクセス
量に応じた?動スケール可能なWEBサイトの構築
サイト運営者の以下の思いに応えたい
1. WEBサイトの突発的なアクセス増に対応したい
2. WEBサイトの構成を変えたくない
3. 低価格かつ、運?の?間がほとんどかかわらな
いようにしたい
1. AWSのCDNサービス CloudFrontの説明
? CDNとは、CloudFrontとは
2. 当社での利?事例(IPO対策)
? 背景、実施内容、成果
3. CloudFrontの利??法
? 設計、実装、試験、公開の流れ
4. まとめ
アジェンダ7
Update 2010/7/21
AWSのCDNサービス CloudFront
8
CDN(コンテンツデリバリーネットワーク)とは
WEBコンテンツ配信に特化したサービス
CDNとは9
自社WEBサイト(サーバ)通常(CDN無し)
CDN(コンテンツデリバリーネットワーク)とは
WEBコンテンツ配信に特化したサービス
CDNとは10
自社WEBサイト(サーバ)CDN有り
CDN
世界各国で稼働
CDNがWEBコンテンツを
?時的にキャッシュして利?者に配信する
CDNの仕組みとは11
DBサーバWEBサーバCloudFront
CDNインターネットからの
アクセス
キャッシュの切れた
ページの問合せ
WordPressの処理
http リクエスト(初回アクセス)
http リクエスト
SQL(WordPressのリクエスト)
記事のデータなどweb
ページweb
ページ
web
ページ
http リクエスト(2度目以降アクセス)
web
ページ
TTL(Time	to	live)が過ぎる
まで保持される
既存環境(例 :WordPress)大量アクセスに耐えられ
るサーバとネットワーク
各種CDN12
(1) Akamai
? 最??のCDN
? 全世界のネットワーク通信量の数割がここから配信
(2) Amazon CloudFront
? AWS提供のCDN
? 今回紹介するサービス
< CDNの利?例 >
? N/W、H/W機器のドライバやミドルウェアの配信
? Windows等のOSのupdate
CloudFrontとは13
< 特徴 >
? AWSアカウントがあればWEBコンソールから利?可能
? キャッシュルールを詳細に設定可能
? 世界各地のサーバでキャッシュ
? 明瞭会計
詳しくはこちらのページ
http://aws.amazon.com/jp/cloudfront/
AWSがサービスの?部として提供しているCDN
CloudFrontの利?料?14
<費?計算式>
CloudFront費?
= (1) CloudFrontからのデータ転送費?(1GB当り約17円)
+ (2) CloudFrontへのデータ転送費?(1GB当り約8円)
+ (3) CloudFrontへのリクエスト回数(1万リクエストで 約1円)
ほぼデータの転送量で決定 (1GB当り約17円)
?間10万PVのサイトなら?間2000円程度
急なアクセス増に対応するエンジニアの?件費を考えると、
?分に安い価格と思います
?般的なコーポレートサイトを想定
?間10万PV、 1.2MB/PVの転送が発?
Update 2010/7/21
当社での利?事例(IPO対策)
15
当時のサイト構成16
?般的なWordPressのコーポレートサイト
理由
1. 事業サービスほどの?スペックは不要
2. コンテンツの運?が中?
VM
WP
VMのスペック
CPU: 仮想1コア
メモリ: 1GB
IPO :影響が想定しきれない17
すべてが未知なため、
何をどのくらい対応すればよいかがわからない
1. 妥当な想定アクセス数が出せない(性能を何倍にするべき??)
通常の10倍?、100倍??、1000倍???
2. 新規に当社のファンになってくれるかもしれない?がアクセスする
ので、アクセス数に制限をかけたくない
3. 株価操作のために、?量アクセス攻撃を仕掛けられる可能性も否定
できない
4. 24時間稼働が必須のWEBサービス提供会社として、誇りと信?に
かけて、絶対サーバを落とすわけにはいかない
VM
WP
実施した対策18
CloudFrontを設置
各ページ1時間に数回だけ配信
結果19
IPO公表時刻のアクセス増(前?同時刻?約80倍)
でも、サーバの負荷はいつも通り
IPOの公表日
DBサーバWEBサーバCloudFront
CDN
通常80倍のアクセス
(瞬間的にはそれ以上)
アクセスの5%程度
既存環境(例 :WordPress)
CPU
Update 2010/7/21
CloudFrontの利??法
20
1. 設計
A) キャッシュ対象
B) キャッシュ時間
C) その他 注意点
2. 実装
A) CloudFrontの設定
B) Apacheの設定
3. 試験と公開
タスク21
キャッシュルールについて、
設計、実装、試験を実施する
設計 キャッシュ対象22
静的なコンテンツ、動的なコンテンツについて
キャッシュする対象URLを決める
WordPressの例
1. 静的なコンテンツのキャッシュ
静的なファイルの識別?がついたURL(/?/?.htmlなど)
html,css, js, (画像)git, Git, (フォント)svg, (ファイル)zip ..
2. 動的なコンテンツのキャッシュ
アクセス傾向をもとにキャッシュするべきページを選定
(トップページ)/, /index.php, (ニュース)/news/ ..
※ 想定外ページのキャッシュによる、ユーザ情報の流出や画?崩れ
が発?する危険があるため、指定ページのみキャッシュをおすすめ
設計 キャッシュ時間23
変更を反映させるまでの時間を考えて、
TTL(キャッシュ時間)を決める
TTLを?くする -> ページ更新して実際に反映される時間が?くなる
TTLを短くする -> CDNを通過するアクセス量が増える
細かく設計しても良いが、ロックオンで実施したのは3分類
1. 静的なキャッシュ対象コンテンツ [TTL] 86400秒(24時間)
2. 動的なキャッシュ対象コンテンツ [TTL] 3600秒(1時間)
3. キャッシュしないコンテンツ [TTL] 0秒
設計 その他注意点24
1. 無料のSNI独?SSLか、?6万円の専?IP独?SSLが使?可能
※ 無料のSNI独?SSLを使うリスク
SNIを使えない古いブラウザには、危険なサイトとして警告
2. アクセスカウンターによってはアクセス数の取得不可能
WEBサーバまでアクセスが来なくなるため、WordPressのアクセ
スカウンタープラグインなどは動作しなくなる
※ AD EBiSや、Google Analytics等のタグ計測ツールは影響なし
SSL証明書、アクセスカウンター、ログイン機能、
およびIP制限には注意
設計 その他注意点25
3. ログイン機能があるサイト(WordPressも管理者画?の機能あり)
はユーザの識別?毎に別ページとして扱うように設定
※ 他のユーザ向けのデータが他のユーザに?えてしまうリスク
4. CloudFrontを経由すると、IPがすべてCloudFrontからのアクセ
スに?えるので、通常のIP制限が不可能
CloudFrontを経由しない、アクセス?法を?意しIP制限をかける
SSL証明書、アクセスカウンター、ログイン機能、
およびIP制限には注意
実装 CloudFrontの設定26
WEBブラウザでAWSの管理コンソールから
CloudFrontを設定
実装 Apacheの設定27
Apacheの設定ファイル(*.conf,.htaccessなど)を
利?して、httpのCache-Controlヘッダを設定
#	デフォルトキャッシュ無し
Header	set	Cache-Control	"no-store,	no-cache,	must-revalidate,	post-check=0,	pre-check=0"
Header	set	Pragma	"no-cache"
#	静的コンテンツのキャッシュ設定
<Files	~	
"?.(crt|css|eot|GIF|gif|gz|html|ico|ja|JPG|jpg|md|mo|otf|pdf|PNG|png|svg|swf|ttf|txt|woff|xap|xls|xml|zip)$">
Header	set	Cache-Control	"max-age=86400"
Header	unset	Pragma
</Files>
#	WordPressが生成する動的コンテンツのキャッシュ設定
<Files	"index.php">
Header	set	Cache-Control	"max-age=3600"
Header	unset	Pragma
</Files>
例) WordPress
試験と公開 CloudFront動作確認28
hostsファイル、DNSを使って
各ページが想定通りに動作するのか検証して公開
WEBサーバCloudFront
www.lockon.ne.jp
外部からの流入
11.22.111.222d~.cloudfront.net[CloudFrontのドメイン]
DNS
www.lockon.ne.jp	->	11.22.111.222	
初期状態
DNS
www.lockon.ne.jp	->	11.22.111.222
hoge.lockon.ne.jp	->	11.22.111.222
試験と公開 CloudFront動作確認29
hostsファイル、DNSを使って
各ページが想定通りに動作するのか検証して公開
WEBサーバCloudFront
www.lockon.ne.jp
11.22.111.222
hoge.lockon.ne.jp
www.lockon.ne.jp
リバプロ
外部からの流入
Step1
d~.cloudfront.net[CloudFrontのドメイン]
DNS
www.lockon.ne.jp	->	11.22.111.222
hoge.lockon.ne.jp	->	11.22.111.222
試験と公開 CloudFront動作確認30
hostsファイル、DNSを使って
各ページが想定通りに動作するのか検証して公開
WEBサーバCloudFront
www.lockon.ne.jp
11.22.111.222
hoge.lockon.ne.jp
www.lockon.ne.jp
リバプロ
外部からの流入
hostsファイルを使ったテスト
hosts	
www.lockon.ne.jp	->	10.20.10.20
※ 10.20.10.20はCloudFrontのIP
Step1
d~.cloudfront.net[CloudFrontのドメイン]
DNS
www.lockon.ne.jp	->	11.22.111.222
hoge.lockon.ne.jp	->	11.22.111.222
試験と公開 CloudFront動作確認31
hostsファイル、DNSを使って
各ページが想定通りに動作するのか検証して公開
WEBサーバCloudFront
www.lockon.ne.jp
11.22.111.222
hoge.lockon.ne.jp
www.lockon.ne.jp
リバプロ
外部からの流入
Step1
d~.cloudfront.net[CloudFrontのドメイン]
DNS
www.lockon.ne.jp	->	d~.cloudfront.net	
hoge.lockon.ne.jp	->	11.22.111.222
試験と公開 CloudFront動作確認32
hostsファイル、DNSを使って
各ページが想定通りに動作するのか検証して公開
WEBサーバCloudFront
www.lockon.ne.jp
11.22.111.222
hoge.lockon.ne.jp
www.lockon.ne.jp
リバプロ
外部からの流入
Step2
d~.cloudfront.net[CloudFrontのドメイン]
Update 2010/7/21
まとめ
33
まとめ
1.アクセス変動に低コストで?動対応
2.WEBブラウザで簡単に利?開始
3.オンプレ環境、クラウド環境問わず、
WordPressなどのCMSにも適?可能
34
CloudFrontはスモールスタートな
Innovatoin事業を?援できる有益なツール

More Related Content

Innovation EGG 第4回 発表資料 瞬間高アクセス対策のためのCloudFront活用