ピクシブとさくら共同開発のクラウド画像変換サービス、なぜImageFluxは生まれたのか
こんにちは、子育てと仕事の両立に苦慮している@harukasanです。
このたび新しいプロダクトである、画像配信・変換に特化したクラウドサービス、ImageFluxをリリースしました。 このサービスはさくらインターネットさんと共同で行わせて頂くサービスになっております。
今回は、なぜImageFluxをつくったかという話をしようと思います。
ImageFluxが解決する問題
Webにおいて画像はなくてはならない要素です。 ユーザのアイコンやプロフィール画像、デザインの背景、ヘッダー画像…… さまざまな画像がPC、アプリ、さまざまなデバイスにいろんなサイズで表示されます。
画像がメインコンテンツでないサービスであったとしても、いろいろな形で画像を扱わなければなりません。 配信されるサイズについてデザイナーと議論し、 フォーマットや転送量をモバイルアプリエンジニアと確認し、 インフラチームに負荷や転送量を相談し、 ImageMagickのワークアラウンドを実装し、脆弱性対応をし続ける……
ルーチンワークとして普段何事もなく行われている開発の一コマですが、 各サービス毎に支払われるこれらの開発コストは決して無視できるものではありません。 画像に関する開発コストは本来もっとサービスのために使えるはず…… この問題を解決するのがImageFluxです。
ImageFluxはURLパラメータによって画像をすきなサイズに変換し、 キャッシュを高速に配信します。 これまで使っていたストレージからわざわざ画像を移動させる必要はありません。 HTTPサーバ、またはAmazon S3互換のストレージであればそのまま利用することができます。
サービス詳細についてはこちらからどうぞ。
ピクシブにおける画像配信・変換
さて、それではピクシブにおける画像配信や画像変換がどのように作られてきたのかひもといてみましょう。
私がピクシブの画像配信に関わりはじめたのは、新卒で入ってすぐのことです。当時の資料が残っていました。
www.slideshare.net
当時、pixivの画像は旧社屋にある所謂ベニヤサーバに保存されており、データセンターでキャッシュして配信していました。 旧社屋の回線容量に限界があったことから始まったキャッシュクラスタですが、サービスのスケールとともに 規模を拡大していき、2013年には10G回線を引き込み、現在では数十Gbpsのトラフィックまでに成長しています。
当時ImageMagickを利用したオープンソースの画像変換プロキシはいくつか存在していましたが、 ImageMagickは一旦内部フォーマットに変換してから画像処理を行うため、遅延やCPU負荷が問題となっていました。 また、オプションやバッドノウハウが多く、安定した画像変換が行えないのも問題のひとつです。
これを解決するために開発されたのがgo-thumberです。JPEG→JPEGの変換に特化することで、最速の画像変換を実現しました。これによりPC版、モバイルWeb、アプリそれぞれに最適化された画像配信ができるようになりました。
go-thumberによるサムネイル変換については下記記事をご覧ください。
ピクシブとImageFlux
さて、ここまで紹介したピクシブの画像配信・画像変換システムは、 すべてピクシブが運営しているサービスのひとつである イラストコミュニケーションサービス pixivのために構築されてきました。 変換できる画像形式もJPEGに限られますし、pixivの画像ストレージ形式に完全に依存した構成をとっていました。
現在、ピクシブでは10を越えるサービスを運営しています。 どんなWebサービスにおいても必要となる画像変換・配信に特化したサービスは ピクシブにとってまさに必要なものでした。
こうしてうまれたのがImageFluxです。 ImageFluxではすでにオープンソースとして公開しているgo-thumberをベースに JPEG以外の各種フォーマットについても高速な変換ができるよう対応しています。 設計をいちから見直したので、もはや別物のプロダクトです。
大人気のヲタ恋やうさぎは正義といったマンガが無料で読めるpixivコミックアプリの画像配信にもImageFluxの画像変換技術が利用されています。
ImageFluxの今後
ImageFluxは単に収益化のためにリリースしたわけではありません。 これまで自社だけで運用してきた画像変換・配信を外部サービスとして提供することで、 画像変換・配信技術をより強化することが目的です。
とはいえ、ImageFluxチームはまだ始まったばかりです。大規模な画像変換・配信技術の開発に興味がある方はぜひご連絡ください。また、画像変換や画像配信で困っていることがあれば、お声がけいただければ幸いです。