ロングテールな画像配信 その1
開発部・システム運用グループの長野です。最近は「サーバ/インフラを支える技術」を読みながら通勤しています。今回はmixiの画像配信について書かせて頂きたいと思います。1回目は画像配信の課題について説明させて頂きます。
■画像配信の種類
これまで画像の配信は大きく分けて2種類あると考え、システムを構築してきました。1つは1ファイルあたりへのアクセスが非常に多くなりますが、ファイル数が少ないもの。もう一つはファイル数が膨大になる代わりに、1つのファイルへのアクセスは少ないものになります。
前者はmixiの中で使われるロゴ画像やメニューの画像等のページ部品、また広告画像や絵文字画像になり、後者はユーザがアップロードする日記やアルバムの画像にあたります。ページの部品の画像はファイル数はそれほど多くないものの、サーバへのアクセス数が最大で秒間に数万リクエストにもなります。逆にアルバムや日記の画像は全体で数億以上のファイルがありますが、画像へのアクセスは該当する日記やアルバムを閲覧したユーザからのみになり、1つのファイルへのアクセスは少なくなります。従来はこの2つの考え方で配信サーバを用意してきましたが、mixiへのアクセスが多くなるとこれらの配信方法だけでは対応ができない種類の画像がでてきました。それはユーザがアップロードをし、アクセスが多く、ファイル数も多いプロフィール画像やコミュニティのロゴ画像になります。
ここでは数が多くアクセスも多いプロフィール画像の配信について紹介します。■プロフィール画像の配信
mixiのプロフィール画像は、プロフィールページで表示される180px x 180px、マイミク一覧やコミュニティのメンバー一覧で利用される76px x 76pxのサイズが従来から使われてきましたが、現在、エコーのリリースに合わせて新しく用意された40px x 40pxを加えて3種類の画像があります。このプロフィール画像を設定しているユーザ数は1,500万ユーザの約70%になり、約1,000万ユーザの方が設定されています。ここで単純にファイル数だけを計算すると1,000万人のユーザが大中小3つの画像を持つ事になるので、延べファイル数は3,000万にもなります。
このプロフィール画像へのうち76x76のサイズ(1000万ファイル)へのリクエストについて調査したところ、次回に紹介する配信システムのproxyサーバ4台のうち1台へのアクセスは1日で5,000万回以上記録されていました。この5,000万回のリクエストの中でアクセスされるユニークな画像は、800万ファイルあり、全体の70%以上のファイルへ1日でアクセスされていることが分かりました。 さらに詳しく画像毎のアクセス数を調査した結果が以下になりますリクエスト回数 | 画像数 | 画像数×リクエスト数 | 割合 |
---|---|---|---|
1 | 2,020,000 | 2,020,000 | 4% |
2〜10 | 5,242,000 | 23,930,000 | 43% |
11〜30 | 1,130,000 | 18,300,000 | 33% |
31〜100 | 157,000 | 7,320,000 | 13% |
100〜 | 18,000 | 3,830,000 | 7% |
■まとめ
プロフィール画像の配信では非常に長いロングテールの尾の部分である、大量の画像を配信できるシステムが必要になります。実際のシステムについての解説は次回にさせていただきたいと思います。