サイバーエージェント×クックパッド合同勉強会 参加レポート

昨日、Cookpadのオフィスで開催された「サイバーエージェント×クックパッド合同勉強会」に、運よくAtndの競争を勝ち抜いて参加できたので、レポートを。


概要

発表内容

【株式会社サイバーエージェント
『OpenStackを検証してみた – オープンソースの仮想化技術 open stack の検証結果の報告』 
 坂本 佳久さん (アメーバ事業本部-プラットフォームディビジョン-NeutralTechnologyGroup)

『AmebaPico を支える技術 – AWS上に構築された AmebaPico で使用されている技術・開発体制について』
 森野 耕平さん (SocialApps事業部)

クックパッド株式会社】
『毎日の料理を楽しくする画像配信技術』 
 成田 一生さん(技術部-インフラストラクチャーグループ)

AWS移行に向けたクックパッドの取り組み+α』
 菅原 元気さん(技術部-インフラストラクチャーグループ)

開催日時・場所

2011年5月25日(水)19:30〜21:00(開場19:15、閉会後懇親会)
クックパッド株式会社 5階 ラウンジ
techlife.cookpad.com

感想

全体の共通テーマは、AWS。それぞれの担当サービスでの事例を踏まえつつ、どう使っていくべきかを考える感じ。
懇親会用の美味しそうな料理の匂いに耐えながら考えたことをまとめます。

OpenStack

オープンソースクラウドインフラ構築技術。既存のハードウェアリソース上にクラウドコンピューティング環境を構築できる。発表の中では、開発途上なので機能の不足やドキュメントを追いかけないといけないとか、多々問題はあると言われていたけれど、既存のハードウェアリソースを有効活用したいなという人にとっては良い解決策になりそうな印象を持ちました。

AmebaPico

Picoは、Amebaピグの海外版。Facebookプラグインとしても提供中。利用者には東南アジア・米国が多いというのが意外でした。
サービスは全てAWS上で提供(!)されていて、サービス内でのコンポーネントごとに配信方法を工夫しているとのこと。

  • 大きめのデータはHTTP(WEBサーバ)で配信
  • 細かい大量のコマンドは独自のバイナリプロトコル(Socketサーバ)
  • 静的データ(CDN(Cloud Front)、ストレージ(S3))

また、AWSを使ってサービスを展開するメリット・デメリットを挙げられていました。(以下で要約)

  • メリット
    • 海外展開が楽
    • インフラエンジニアがいなくてもなんとかなる
  • デメリット
    • 2,3ヶ月に1つくらいのペースで落ちる(場所がバージニアだから?)
    • リブートしたら復活することもあるけど、効かないときは新しいインスタンスを作る
    • 落ちないけど、一定時間応答がなくなることもある
    • 落ちることもあるけど、冗長化すればなんとかいける

サーバそのものの安定感にやや難ありといった感じでしたが、そのあたりは冗長化の工夫次第ということのようです。

画像配信技術

現在、Cookpadでは、約800万枚のレシピ写真(画像)があり、リクエストも約7000/secくらい。
現在のシステムになる以前は、画像が投稿されるたびにサムネイル画像などを生成して、ストレージに保存をくりかえしていたが、iPhoneAndroidなどの新デバイスに対応するときや、PCサイトのデザインを変更するときに、全画像のサムネイルを新しいサイズに変更するのが非常に時間がかかっていたそう。
そこで、画像へのリクエストURLに変換したいサイズ情報などを含めておけば、サーバー側で処理して返すTOFUという画像配信システムを開発したとのこと。

サムネイル画像に関する扱いは、サービスの大小に関係なく共通の悩みだと思います。「自分の担当しているサービスはリリースしたばかりでサムネイルの数も少ないし、サイズの変更が必要になったときにバッチをまわせばいいや。」という考えもあると思いますが、時間の経過と共に気がつくと膨大な量に…という状態になってからでは面倒です。
URLベースでオンデマンドに変換する方法はオリジナルの画像が1枚で済むので、Amazon S3のような従量課金制のストレージサービスを活用している場合、サーバ容量(≒コスト)の面でもメリットが大きいと思いました。

まとめ

普段、AWSに関わりがないのでひとつの技術として捉えていたのだけど、発表内容や懇親会で参加した皆さんと話してみると、AWSに期待しているところが大きいということに驚かされました。
あと、懇親会の料理はさすがCookpadなだけあって非常に美味しかったです:D ごちそうさまでした!