shibatch's journey

日々考えていることをつらつら書くだけです

S3からダウンロードする場合と間にCloudFrontを挟んだ場合の時間の比較

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の機能を期待するほかに、ダウンロード時間が早くなる期待をもって良さそう。