Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
30days Album の裏側 + 表側 2011/06/21 Mitaka.rb#12 @kyanny
Slide 2
Slide 2 text
$ whoami ● 長永 健介 ● 刺身☆ブーメラン ● @kyanny ● ペパボでプログラマやってます
Slide 3
Slide 3 text
30days Album ● http://30d.jp/ ● 写真共有・保存サービス ● 2008年4月リリース
Slide 4
Slide 4 text
規模は? ● 95,000 人のユーザー ● 57,000,000 枚の写真 ● 113,000,000,000,000 バイトのストレージ
Slide 5
Slide 5 text
アーキテクチャ
Slide 6
Slide 6 text
Backend の話 ● ストレージについて ○ MogileFS ○ Storage API ● ジョブキューについて ○ TheSchwartz ○ Job API
Slide 7
Slide 7 text
Backend (1) ● MogileFS ○ 分散ファイルストレージ ○ 大手サイトで導入事例多数(らしい) ○ 詳しくは google.com/?q=mogilefs
Slide 8
Slide 8 text
Backend (2) ● Storage API ○ アプリケーションとストレージを繋ぐ ○ Perl 5.8 + Catalyst 5.7 ○ lighttpd + FastCGI ○ ファイル操作(保存・削除) ○ 基本的な HTTP メソッドをサポート ○ なぜわざわざ API? ■ 疎結合 ■ ライブラリの実装言語の違い(Perl と Ruby)
Slide 9
Slide 9 text
Backend (3) ● TheSchwartz ○ Job Queue ○ delayed_job のようなもの ○ 写真のリサイズ、動画の変換、ストレージへの保存 ○ 処理ごとに別のワーカーを稼働 ○ 各ワーカーは fork してマルチプロセスで処理
Slide 10
Slide 10 text
Backend (4) ● Job API ○ アプリケーションと TheSchwartz を繋ぐ ○ パラメータを受け取ってジョブキューに追加 ○ Storage API とほぼ同じ構成 ○ わざわざ API な理由もほぼ同じ ○ こちらは XMLRPC
Slide 11
Slide 11 text
詳しくは・・・ ● 関西オープンソース 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
Slide 12
Slide 12 text
Frontend の話 ● Ruby + Rails ● Passenger ● Plugins / Middlewares ● Test
Slide 13
Slide 13 text
Frontend (1) ● Ruby 1.8.6 (MRI) ● Ruby on Rails 2.x.x (censored) ● どちらもだいぶ古い ● バージョンアップしたい!・・・しかしテストが(後述 ● Rails の灯を絶やさないように頑張ってます
Slide 14
Slide 14 text
Frontend (2) ● Phusion Passenger ● lighttpd + FastCGI から移行 ○ 理由 (1) 省メモリ化したかった ■ メモリ消費量は変わらなかった・・・ ○ 理由 (2) 安定化したかった ■ だいぶ安定した ● アプリケーションサーバは2台で運用 ○ 若干の増減あり(なるべくスケールアップ)
Slide 15
Slide 15 text
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 も試してみたい
Slide 16
Slide 16 text
Frontend (4) ● Test ○ shoulda ○ factory_girl (@func09 さんのブログで勉強した) ■ http://www.func09.com/wordpress/archives/532 ○ mocha ○ 書いてます、けど不十分・・・ ○ RSpec にすべきか年数回くらい悩む
Slide 17
Slide 17 text
今後について ● 正直このスライドにたどり着けると思ってなかった ● 開発者目線で今後取り組みたいこと ○ 継続的インテグレーション ○ テストの充実 ○ Rails のバージョンアップ ○ 「日本一の写真共有サービス」を目指したい ○ 「日本の代表的な Rails 製サービス」に数えられたい
Slide 18
Slide 18 text
まさかまだ時間があるなんて ● 中途採用やってます! ○ http://www.paperboy.co.jp/recruit/ ○ 開発言語は PHP です!(キリッ ○ むしろ Rubyist 増えて欲しい・・・
Slide 19
Slide 19 text
ご静聴ありがとうございました