導入事例

毎日100万点以上追加されていく膨大な商品画像への対応

株式会社メルカリ
プリンシパルエンジニア
久保 達彦氏

個人同士の取引を対象としたフリマアプリ「メルカリ」 は、国内だけでなく米国や英国でもサービスを展開し、全世界で1億ダウンロードを突破しました。メルカリ上で売買される商品金額は月間で100億円以上に、メルカリ上で出品される商品数は毎日100万品以上にまで大きくなっています。
メルカリのコンテンツは画像の占める割合が高く、データ通信の大部分が画像です。日々の出品に伴い画像ファイルも大量に増え続けます。画像配信には従来からCDNを利用していましたが、配信データ量の大幅な増加に伴い、CDNのキャッシュヒット率の低下が顕著になってきました。そこで、CDNとオリジンサーバの間に中間的なキャッシュサーバを導入することにしました。「別途キャッシュサーバを導入するにはそれなりに太い回線が必要な規模でしたので、その能力を持った事業者さん数社を検討しました」(メルカリ 久保氏)。

また、それと同時にデータ通信量を削減するためにWebPや画像を動的にリサイズする仕組みを導入することも検討していました。「画像のキャッシュや動的な変換の仕組みを構築・運用するのには相応のリソースが必要になりますが、当初は自前で構築することも視野に入れていました」(久保氏)。一般に画像処理は負荷が高く、動的な処理を入れることによって発生するレイテンシも無視できません。一方で、端末ごとに適切な画像サイズをあらかじめ用意しておくことやUIやデザイン変更の度に適切なサイズの画像データを生成していくのは、膨大なストレージや処理が必要となり現実的ではありません。非常に難しい課題です。

中間キャッシュサーバの導入でキャッシュヒット率を改善

メルカリでは、画像ファイルを格納しているオリジンサーバをそのまま利用できることを要件として複数のソリューションを検討し、最終的にImageFluxの導入を決定しました。「試算した月額費用と、実際にオリジンサーバに対するオフロード率などの性能を見てImageFluxに決定しました」(久保氏)。実際にImageFluxをキャッシュサーバとして利用することで、オリジンサーバに対するオフロード率を大きく向上させることができました(フェーズ1)。

画像変換の導入でデータ配信量を削減

キャッシュサーバ導入の成果を確認できた後、フェーズ2として画像の動的なリサイズとWebPへのフォーマット変換などの画像変換機能を利用していきました。商品タイムラインの2列から3列へのデザイン変更でCDNのトラフィックが1.5倍近く増加しており、画像データの通信量削減が急務となっていたことが背景にあります。「画像変換機能の本番環境への適用は段階的に行いました。たとえば、最初は特定のAPIリクエストのうちの10%だけ適用するようにして、その後適用範囲を50%、100%という具合に増やしていくというような形です」(久保氏)。
画像変換機能の導入の結果、タイムラインをはじめ、メルカリのアプリ内で表示される多くの画像を動的にリサイズしたり、WebPに変換することでアプリのデータ通信量を大幅に削減できました。また、ImageFluxではサイズ変更やファイルフォーマットの変換を行う際、画像ファイルを参照するURL文字列に画像変換用のパラメータを組み込むだけなので、アプリのUIやデザインの変更によって画像のサイズ変更などが必要な場合でも柔軟に対応できるようになりました。「ImageFluxの導入は、アプリを利用しているお客様にとっても画像の表示速度の向上やデータ通信量の減少など、相当なメリットがあったと思います。もちろんImageFluxによる画像変換の導入には相応のコストがかかりましたが、メルカリの画像データ通信量を30%以上削減することができたので、そのコストに見合うメリットは十分に得られたと思っています」(久保氏)。

以前のメルカリのタイムライン(左)は2列だった。3列(右)に変更後、アプリ のデータ通信量が1.5倍近く増加したが、ImageFluxの導入によりデータ通信量 を大幅に削減することができた。

画像変換・配信エンジン ImageFlux サービス紹介資料

株式会社メルカリ

事業内容

フリマアプリ「メルカリ」の企画・開発・運用

設立

2013年

URL

https://www.mercari.com/jp/

資料請求・お問い合わせ

資料ダウンロード