Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
30days Album の裏側 + 表側
Search
Kensuke Nagae
May 23, 2012
Technology
150
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
30days Album の裏側 + 表側
Mitaka.rb#12 の LT で発表したときの資料です
Kensuke Nagae
May 23, 2012
More Decks by Kensuke Nagae
See All by Kensuke Nagae
スタディサプリ開発チームのこれまでとこれから / StudySapuri Product Meetup #1
kyanny
0
2.6k
Tokyo Web Dev hiring discussion session
kyanny
0
13k
sbpayment.rbのご紹介
kyanny
0
2.2k
#AsiaDevNight
kyanny
0
190
Grape による API 実装 in action
kyanny
7
7.3k
<%= link_to "bundle", "update" %> - Make "bundle update" more fun to review
kyanny
2
5.4k
Web Developer Seminar
kyanny
0
2k
Heroku を利用した Quipper の開発事例紹介
kyanny
11
3.4k
Continuous gem dependency updating with Jenkins and Pull Request
kyanny
9
3.5k
Other Decks in Technology
See All in Technology
Backstageでつくるセルフサービスな社内開発基盤
kikunosuke75
1
180
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.3k
Kiro5兄弟のいまどきのセキュリティ基礎知識
kentapapa
0
490
Sansan Engineering Unit 紹介資料
sansan33
PRO
1
5k
魔法少女がClaude Codeを監視する / ccportal-deck
noriyukitakei
3
110
少人数データチームのDevin活用実践事例
runandy16
2
150
Bet AI Day 2026丨バクラク Autopilot、業務システムの再設計
layerx
PRO
1
790
Claude Codeの体系的な理解と知識のフック
oikon48
10
6.5k
Bet AI Day 2026丨AIを「使う」から、AIが「働く」へ ― LayerXが進める「組織AI」の社会実装
layerx
PRO
2
1.4k
Data Hubグループ 紹介資料
sansan33
PRO
0
3.2k
どんな手を使っても絶対間に合わせるスケジューラ
asari194617
0
1.5k
DGX Sparkを2台使って いろいろ動かす話
sonoda_mj
1
110
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
300
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.6k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
320
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
830
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
28
3.6k
Reflections from 52 weeks, 52 projects
jeffersonlam
356
21k
Un-Boring Meetings
codingconduct
0
400
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Designing Powerful Visuals for Engaging Learning
tmiket
1
520
Jamie Indigo - Trashchat’s Guide to Black Boxes: Technical SEO Tactics for LLMs
techseoconnect
PRO
0
640
How to Think Like a Performance Engineer
csswizardry
28
2.8k
Transcript
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 増えて欲しい・・・
ご静聴ありがとうございました