狠狠撸

狠狠撸Share a Scribd company logo
30days Album の裏側 + 表側

    2011/06/21 Mitaka.rb#12
           @kyanny
$ whoami

● 長永 健介 <Kensuke Nagae>
● 刺身☆ブーメラン
● @kyanny
● ペパボでプログラマやってます
30days Album

● http://30d.jp/
● 写真共有?保存サービス
● 2008年4月リリース
規模は?

● 95,000 人のユーザー
● 57,000,000 枚の写真
● 113,000,000,000,000 バイトのストレージ
アーキテクチャ
Backend の話

● ストレージについて
   ○ MogileFS
   ○ Storage API
● ジョブキューについて
   ○ TheSchwartz
   ○ Job API
Backend (1)

● MogileFS
   ○ 分散ファイルストレージ
   ○ 大手サイトで導入事例多数(らしい)
   ○ 詳しくは google.com/?q=mogilefs
Backend (2)

● Storage API
   ○ アプリケーションとストレージを繋ぐ
   ○ Perl 5.8 + Catalyst 5.7
   ○ lighttpd + FastCGI
   ○ ファイル操作(保存?削除)
   ○ 基本的な HTTP メソッドをサポート
   ○ なぜわざわざ API?
       ■ 疎結合
       ■ ライブラリの実装言語の違い(Perl と Ruby)
Backend (3)

● TheSchwartz
   ○ Job Queue
   ○ delayed_job のようなもの
   ○ 写真のリサイズ、動画の変換、ストレージへの保存
   ○ 処理ごとに別のワーカーを稼働
   ○ 各ワーカーは fork してマルチプロセスで処理
Backend (4)

● Job API
   ○ アプリケーションと TheSchwartz を繋ぐ
   ○ パラメータを受け取ってジョブキューに追加
   ○ Storage API とほぼ同じ構成
   ○ わざわざ API な理由もほぼ同じ
   ○ こちらは XMLRPC
詳しくは???

● 関西オープンソース 2008 30days Albumの裏側
   ○ http://www.slideshare.net/mizzy/2008-30days-album-
     presentation
● Yapc Asia 2009 ペパボでのPerlの使い方
   ○ http://www.slideshare.net/hiboma/yapc-asia-2009-perl
● YAPC Asia 2010 30days Albumの裏側 後日談
   ○ http://www.slideshare.net/kyanny/inside-30days-
     albumlaterstory-5452817
Frontend の話

● Ruby + Rails
● Passenger
● Plugins / Middlewares
● Test
Frontend (1)

● Ruby 1.8.6 (MRI)
● Ruby on Rails 2.x.x (censored)
● どちらもだいぶ古い
● バージョンアップしたい!???しかしテストが(後述
● Rails の灯を絶やさないように頑張ってます
Frontend (2)

● Phusion Passenger
● lighttpd + FastCGI から移行
    ○ 理由 (1) 省メモリ化したかった
        ■ メモリ消費量は変わらなかった???
    ○ 理由 (2) 安定化したかった
        ■ だいぶ安定した
● アプリケーションサーバは2台で運用
    ○ 若干の増減あり(なるべくスケールアップ)
Frontend (3)

● Plugins / Middlewares
   ○ BackgrounDRb (!)
       ■ データベース使わないやつ (!!)
       ■ ソースも情報もないオーパーツ状態
       ■ Friends don’t let friends use backgrounDRb.
       ■ http://www.engineyard.com/blog/2009/5-tips-for-
         deploying-background-jobs/
       ■ とはいえたくさん使ってる(非同期処理)
   ○ delayed_job
       ■ 移行を見据えて一部で導入(メール投稿)
       ■ 意外に使いづらい(priority)
       ■ resque も試してみたい
Frontend (4)

● Test
   ○ shoulda
   ○ factory_girl (@func09 さんのブログで勉強した)
       ■ http://www.func09.com/wordpress/archives/532
   ○ mocha
   ○ 書いてます、けど不十分???
   ○ RSpec にすべきか年数回くらい悩む
今後について

● 正直このスライドにたどり着けると思ってなかった
● 開発者目線で今後取り組みたいこと
   ○ 継続的インテグレーション
   ○ テストの充実
   ○ Rails のバージョンアップ
   ○ 「日本一の写真共有サービス」を目指したい
   ○ 「日本の代表的な Rails 製サービス」に数えられたい
まさかまだ時間があるなんて

● 中途採用やってます!
   ○ http://www.paperboy.co.jp/recruit/
   ○ 開発言語は PHP です!(???
   ○ むしろ Rubyist 増えて欲しい???
ご静聴ありがとうございました

More Related Content

30days Album の裏側 + 表側

  • 1. 30days Album の裏側 + 表側 2011/06/21 Mitaka.rb#12 @kyanny
  • 2. $ whoami ● 長永 健介 <Kensuke Nagae> ● 刺身☆ブーメラン ● @kyanny ● ペパボでプログラマやってます
  • 3. 30days Album ● http://30d.jp/ ● 写真共有?保存サービス ● 2008年4月リリース
  • 4. 規模は? ● 95,000 人のユーザー ● 57,000,000 枚の写真 ● 113,000,000,000,000 バイトのストレージ
  • 6. Backend の話 ● ストレージについて ○ MogileFS ○ Storage API ● ジョブキューについて ○ TheSchwartz ○ Job API
  • 7. Backend (1) ● MogileFS ○ 分散ファイルストレージ ○ 大手サイトで導入事例多数(らしい) ○ 詳しくは google.com/?q=mogilefs
  • 8. Backend (2) ● Storage API ○ アプリケーションとストレージを繋ぐ ○ Perl 5.8 + Catalyst 5.7 ○ lighttpd + FastCGI ○ ファイル操作(保存?削除) ○ 基本的な HTTP メソッドをサポート ○ なぜわざわざ API? ■ 疎結合 ■ ライブラリの実装言語の違い(Perl と Ruby)
  • 9. Backend (3) ● TheSchwartz ○ Job Queue ○ delayed_job のようなもの ○ 写真のリサイズ、動画の変換、ストレージへの保存 ○ 処理ごとに別のワーカーを稼働 ○ 各ワーカーは fork してマルチプロセスで処理
  • 10. Backend (4) ● Job API ○ アプリケーションと TheSchwartz を繋ぐ ○ パラメータを受け取ってジョブキューに追加 ○ Storage API とほぼ同じ構成 ○ わざわざ API な理由もほぼ同じ ○ こちらは XMLRPC
  • 11. 詳しくは??? ● 関西オープンソース 2008 30days Albumの裏側 ○ http://www.slideshare.net/mizzy/2008-30days-album- presentation ● Yapc Asia 2009 ペパボでのPerlの使い方 ○ http://www.slideshare.net/hiboma/yapc-asia-2009-perl ● YAPC Asia 2010 30days Albumの裏側 後日談 ○ http://www.slideshare.net/kyanny/inside-30days- albumlaterstory-5452817
  • 12. Frontend の話 ● Ruby + Rails ● Passenger ● Plugins / Middlewares ● Test
  • 13. Frontend (1) ● Ruby 1.8.6 (MRI) ● Ruby on Rails 2.x.x (censored) ● どちらもだいぶ古い ● バージョンアップしたい!???しかしテストが(後述 ● Rails の灯を絶やさないように頑張ってます
  • 14. Frontend (2) ● Phusion Passenger ● lighttpd + FastCGI から移行 ○ 理由 (1) 省メモリ化したかった ■ メモリ消費量は変わらなかった??? ○ 理由 (2) 安定化したかった ■ だいぶ安定した ● アプリケーションサーバは2台で運用 ○ 若干の増減あり(なるべくスケールアップ)
  • 15. Frontend (3) ● Plugins / Middlewares ○ BackgrounDRb (!) ■ データベース使わないやつ (!!) ■ ソースも情報もないオーパーツ状態 ■ Friends don’t let friends use backgrounDRb. ■ http://www.engineyard.com/blog/2009/5-tips-for- deploying-background-jobs/ ■ とはいえたくさん使ってる(非同期処理) ○ delayed_job ■ 移行を見据えて一部で導入(メール投稿) ■ 意外に使いづらい(priority) ■ resque も試してみたい
  • 16. Frontend (4) ● Test ○ shoulda ○ factory_girl (@func09 さんのブログで勉強した) ■ http://www.func09.com/wordpress/archives/532 ○ mocha ○ 書いてます、けど不十分??? ○ RSpec にすべきか年数回くらい悩む
  • 17. 今後について ● 正直このスライドにたどり着けると思ってなかった ● 開発者目線で今後取り組みたいこと ○ 継続的インテグレーション ○ テストの充実 ○ Rails のバージョンアップ ○ 「日本一の写真共有サービス」を目指したい ○ 「日本の代表的な Rails 製サービス」に数えられたい
  • 18. まさかまだ時間があるなんて ● 中途採用やってます! ○ http://www.paperboy.co.jp/recruit/ ○ 開発言語は PHP です!(??? ○ むしろ Rubyist 増えて欲しい???