S3からデータをダウンロードする際、直接ダウンロードする場合と、間にCloudFrontを挟んだ場合でダウンロード時間を比較してみた。
比較方法は簡易的なもので、
- S3に2種類のサイズ(50MB / 1GB)のダミーファイルを置いて
- S3 / CloudFrontそれぞれで署名付きURLを発行して
- wgetでダウンロードするのにかかった時間をtimeコマンドでラップしてみる
- S3は東京リージョンで
- 距離による差をみるために東京 / 沖縄でそれぞれ取得する
というもの。 (沖縄でのダウンロード計測は @r_nakamineさんにご協力いただきました!感謝!)
前提は置いておいて結論はこの表です。
S3: 50MB | CF: 50MB | S3/CF(倍) | S3: 1GB | CF: 1GB | S3/CF(倍) | |
---|---|---|---|---|---|---|
東京(単位はsec) | 9.947 | 2.627 | 3.78644842 | 177.305 | 43.5465 | 4.071624585 |
沖縄(単位はsec) | 4.985 | 3.24 | 1.538580247 | 103.375 | 56.125 | 1.841870824 |
- S3直接ダウンロードよりもCloudFrontを挟む方が速い(実績値:2倍〜4倍くらい)
- ダウンロードする場所は日本国内であればさほど影響を与えるほどではないといえる
- おそらく…
- 距離よりは環境による影響が強い
実際にやってみるとちゃんと環境を揃える必要性を感じた が、それを差っ引いてもS3直接よりCloudFrontを挟んだ方がずっと早くなることがわかった。
コンテンツをダウンロードするようなシステムを構築するときはWAFの機能を期待するほかに、ダウンロード時間が早くなる期待をもって良さそう。