(レポート)[JAWS Festa 2016] 70% Cost reduction with On-demand resizing #jawsug #jawsfesta

はじめに

本レポートは2016年10月22日(土)に開催されたJAWS Festa 2016のセッション「70% Cost reduction with On-demand resizing」のレポートです。

本セッションのスピーカーはAWSKRUGのMyungbo Kimさん。

DSCN0501

レポート

自己紹介

・キム・ミュンボさん。
VCNCという会社のエンジニア。
Betweenというサービスを展開している。
 ・カップルのためのサービス。
 ・カップルがチャットしたり、記念日を設定したり、アルバムを共有したり出来る。
 ・全世界で1700万ダウンロードを達成。

今日のお題

・サムネイル関連のアーキテクチャの変更について。
 ・今まではバッチ処理でサムネイル変換をしていたものを、オンデマンド変換にした。
 ・S3のコストを70%カットできた。

元のアーキテクチャ

・カップルは写真を撮影するのが好き。
・アプリケーションの画面では様々なサイズの写真が使われる。
・アップロードされた写真に対して複数のサムネイル映像をバッチ処理で作っていた。
 ・オリジナルイメージがアップロードされると4台くらいのサーバがイメージを取得。
 ・サムネイル画像を作成。
 ・S3バケットに保存。
 ・CloudFront経由でアプリケーションユーザーに配信。
・しかし写真が急激に増えた。
 ・2016年3月時点で11億枚のオリジナルイメージが保存。
 ・サムネイルが66億枚。
 ・合計738TB。
 ・スタートアップ企業としてコストは掛けられない。
 ・写真を保管するS3の費用が大きな問題になっていた。
・一般的なソーシャルネットワークのシステムと違うところ。
 ・通常はいろんな人がその写真を見る。
 ・カップル向けサービスでは写真はカップル自身しか見ない。
 ・見る人が限られているから、その人が見る画像サイズも決まっている。
・サービスのもう一つの特徴。キャッシュのヒット率が高い。
 ・S3のログを分析した結果、30日で30%くらいのリコールレート。

オンデマンドリサイジングへ

・リサイズはCPUを使う作業のため、複数のリクエストが来ると処理が遅くなりユーザー経験も悪くなる。
・そこでSkiaというライブラリを使用。SkiaはChromeなどにも使われているもの。
 ・CPUレベルで細かくチューニングされており、すごく効率化が高い。
 ・ImageMagickより早い。
 ・Skiaのベンチマーク。ImageMagickより75%短時間に処理完了。
webp。Googleが作成したライブラリ。リサイズの高速化が実現。
・新しいアーキテクチャ。
 ・S3に保存された画像をリサイジングサーバが処理。
・リサイズにかかる時間はダウンロード時間より早い。

元のアーキテクチャの移行

・元々保存されていたオリジナルイメージもwebpで全部変換する必要がある。
・オリジナルイメージの変換はミッションクリティカルな作業。
・以前に変換していたサムネイル画像は一旦全部削除。
・SQSとスポットインスタンス+AutoScalingを使って作業実施。
 ・使ったインスタンスタイプはC3.4xlargeとC4.2xlarge。
 ・東京リージョンを使った。東京リージョンはスポットインスタンスが安い傾向にある。
  ・この作業で東京リージョンのスポットインスタンスを一時的に使い切った。
・作業は4日間かかった。最大で140台のスポットインスタンス。
・マイグレーションにかかったコストは7,650ドルくらい。

まとめ

・コストを大きく削減することができた。
・旧アーキテクチャも移行することができた。

さいごに

ターゲットをうまく絞ることでコスト削減が出来た良い例だと思いました。