SlideShare uma empresa Scribd logo
1 de 19
Baixar para ler offline
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 増えて欲しい・・・
ご静聴ありがとうございました

Mais conteúdo relacionado

Mais procurados

Yapcasia2012 ltthon
Yapcasia2012 ltthonYapcasia2012 ltthon
Yapcasia2012 ltthonturugina
 
20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazakiAyachika Kitazaki
 
ロボットシステム学2015年第11回
ロボットシステム学2015年第11回ロボットシステム学2015年第11回
ロボットシステム学2015年第11回Ryuichi Ueda
 
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Sho Hosoda
 
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Masaya Konishi
 
2011 06 18_open_streetmap_neta_no1
2011 06 18_open_streetmap_neta_no12011 06 18_open_streetmap_neta_no1
2011 06 18_open_streetmap_neta_no1Tom Hayakawa
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話Akio OBATA
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回Ryuichi Ueda
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Soudai Sone
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会slankdev
 
Rubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなしRubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなしMasaki Matsushita
 
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetesMasayuki KaToH
 
ロボットシステム学2015年第8回
ロボットシステム学2015年第8回ロボットシステム学2015年第8回
ロボットシステム学2015年第8回Ryuichi Ueda
 
ロボットシステム学2015年第12回
ロボットシステム学2015年第12回ロボットシステム学2015年第12回
ロボットシステム学2015年第12回Ryuichi Ueda
 

Mais procurados (20)

Yapcasia2012 ltthon
Yapcasia2012 ltthonYapcasia2012 ltthon
Yapcasia2012 ltthon
 
20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki20220111 SoftwareDesign #32 kitazaki
20220111 SoftwareDesign #32 kitazaki
 
ロボットシステム学2015年第11回
ロボットシステム学2015年第11回ロボットシステム学2015年第11回
ロボットシステム学2015年第11回
 
Mishimasyk 3 20140705
Mishimasyk 3 20140705Mishimasyk 3 20140705
Mishimasyk 3 20140705
 
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
Rubyで連結リスト使うためのgemを作った(tsukuba.rb版)
 
Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話Rubyにメソッドを追加して遊ぶ話
Rubyにメソッドを追加して遊ぶ話
 
2011 06 18_open_streetmap_neta_no1
2011 06 18_open_streetmap_neta_no12011 06 18_open_streetmap_neta_no1
2011 06 18_open_streetmap_neta_no1
 
Rdkitの紹介
Rdkitの紹介Rdkitの紹介
Rdkitの紹介
 
pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話pkgsrc とは何か? - よもやま話
pkgsrc とは何か? - よもやま話
 
ロボットシステム学2015年第5回
ロボットシステム学2015年第5回ロボットシステム学2015年第5回
ロボットシステム学2015年第5回
 
Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)Postgre sql9.3新機能 (OSC hiroshima 2013)
Postgre sql9.3新機能 (OSC hiroshima 2013)
 
Mishimasyk6 iwatobipen
Mishimasyk6 iwatobipenMishimasyk6 iwatobipen
Mishimasyk6 iwatobipen
 
サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会サイボウズ・ラボユース成果報告会
サイボウズ・ラボユース成果報告会
 
xv6 + mist32 + mruby
xv6 + mist32 + mrubyxv6 + mist32 + mruby
xv6 + mist32 + mruby
 
Datalab and colaboratory
Datalab and colaboratoryDatalab and colaboratory
Datalab and colaboratory
 
Rubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなしRubyで実はwritev(2) が使われているはなし
Rubyで実はwritev(2) が使われているはなし
 
Serverless on GCP
Serverless on GCPServerless on GCP
Serverless on GCP
 
俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes俺とDockerとtDiaryとkubernetes
俺とDockerとtDiaryとkubernetes
 
ロボットシステム学2015年第8回
ロボットシステム学2015年第8回ロボットシステム学2015年第8回
ロボットシステム学2015年第8回
 
ロボットシステム学2015年第12回
ロボットシステム学2015年第12回ロボットシステム学2015年第12回
ロボットシステム学2015年第12回
 

Destaque

関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側Gosuke Miyashita
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingGosuke Miyashita
 
Serverspec at July Tech Festa 2013
Serverspec at July Tech Festa 2013Serverspec at July Tech Festa 2013
Serverspec at July Tech Festa 2013Gosuke Miyashita
 
Julia 100 exercises #JuliaTokyo
Julia 100 exercises #JuliaTokyoJulia 100 exercises #JuliaTokyo
Julia 100 exercises #JuliaTokyoAki Ariga
 
Walter ファミリーの紹介 at Shibuya.go#1
Walter ファミリーの紹介 at Shibuya.go#1Walter ファミリーの紹介 at Shibuya.go#1
Walter ファミリーの紹介 at Shibuya.go#1Gosuke Miyashita
 

Destaque (6)

関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側関西オープンソース 2008 30days Albumの裏側
関西オープンソース 2008 30days Albumの裏側
 
Serverspec at Testing Framework Meeting
Serverspec at Testing Framework MeetingServerspec at Testing Framework Meeting
Serverspec at Testing Framework Meeting
 
Serverspec at July Tech Festa 2013
Serverspec at July Tech Festa 2013Serverspec at July Tech Festa 2013
Serverspec at July Tech Festa 2013
 
Julia 100 exercises #JuliaTokyo
Julia 100 exercises #JuliaTokyoJulia 100 exercises #JuliaTokyo
Julia 100 exercises #JuliaTokyo
 
Walter ファミリーの紹介 at Shibuya.go#1
Walter ファミリーの紹介 at Shibuya.go#1Walter ファミリーの紹介 at Shibuya.go#1
Walter ファミリーの紹介 at Shibuya.go#1
 
Serverspec at hbstudy #45
Serverspec at hbstudy #45Serverspec at hbstudy #45
Serverspec at hbstudy #45
 

Semelhante a 30days Album の裏側 + 表側

JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らないKuniyoshi Tone
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜Takahiro Inoue
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
NodeにしましょうYuzo Hebishima
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む2bo 2bo
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet ServicesNaoto Gohko
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてcyberagent
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Yasuyuki Sugai
 
OCaml でデータ分析
OCaml でデータ分析OCaml でデータ分析
OCaml でデータ分析Akinori Abe
 
YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談Kensuke Nagae
 
Rubyによるお手軽分散処理
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理maebashi
 
30days album / MySQL Casual Talk #3
30days album / MySQL Casual Talk #330days album / MySQL Casual Talk #3
30days album / MySQL Casual Talk #3Ryo Kuroda
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめOhyama Masanori
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Takashi Sogabe
 
Osc2008 Opensuse Moonlinx
Osc2008 Opensuse MoonlinxOsc2008 Opensuse Moonlinx
Osc2008 Opensuse MoonlinxKazuhisa Hara
 

Semelhante a 30days Album の裏側 + 表側 (20)

JAMstackは眠らない
JAMstackは眠らないJAMstackは眠らない
JAMstackは眠らない
 
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
MongoDBを用いたソーシャルアプリのログ解析 〜解析基盤構築からフロントUIまで、MongoDBを最大限に活用する〜
 
Nodeにしましょう
NodeにしましょうNodeにしましょう
Nodeにしましょう
 
Runtime c++editing
Runtime c++editingRuntime c++editing
Runtime c++editing
 
Djangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込むDjangoとweb2pyをapacheに組込む
Djangoとweb2pyをapacheに組込む
 
2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services2015 0228 OpenStack swift; GMO Internet Services
2015 0228 OpenStack swift; GMO Internet Services
 
ログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについてログ解析基盤におけるストリーム処理パイプラインについて
ログ解析基盤におけるストリーム処理パイプラインについて
 
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
Deep Learningハンズオン勉強会「Caffeで画像分類を試してみようの会」
 
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
OpenStack Ops Mid-Cycle Meetup & Project Team Gathering出張報告
 
OCaml でデータ分析
OCaml でデータ分析OCaml でデータ分析
OCaml でデータ分析
 
Devfes kyoto2017
Devfes kyoto2017Devfes kyoto2017
Devfes kyoto2017
 
YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談YAPC Asia 2010 30days Albumの裏側 後日談
YAPC Asia 2010 30days Albumの裏側 後日談
 
Rubyによるお手軽分散処理
Rubyによるお手軽分散処理Rubyによるお手軽分散処理
Rubyによるお手軽分散処理
 
Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要Oracle GoldenGate Studio概要
Oracle GoldenGate Studio概要
 
30days album / MySQL Casual Talk #3
30days album / MySQL Casual Talk #330days album / MySQL Casual Talk #3
30days album / MySQL Casual Talk #3
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
PostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめPostgreSQLによるデータ分析ことはじめ
PostgreSQLによるデータ分析ことはじめ
 
Start-padrino
Start-padrinoStart-padrino
Start-padrino
 
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
Devsumi2013 Ruby開発者のみなさん、mrubyで楽しく快適な組み込みアプリ開発を始めませんか?
 
Osc2008 Opensuse Moonlinx
Osc2008 Opensuse MoonlinxOsc2008 Opensuse Moonlinx
Osc2008 Opensuse Moonlinx
 

Último

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)Hiroshi Tomioka
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfFumieNakayama
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfFumieNakayama
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...博三 太田
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?akihisamiyanaga1
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NTT DATA Technology & Innovation
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)UEHARA, Tetsutaro
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineerYuki Kikuchi
 

Último (8)

業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdfAWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
AWS の OpenShift サービス (ROSA) を使った OpenShift Virtualizationの始め方.pdf
 
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdfクラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
クラウドネイティブなサーバー仮想化基盤 - OpenShift Virtualization.pdf
 
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察  ~Text-to-MusicとText-To-ImageかつImage-to-Music...
モーダル間の変換後の一致性とジャンル表を用いた解釈可能性の考察 ~Text-to-MusicとText-To-ImageかつImage-to-Music...
 
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
CTO, VPoE, テックリードなどリーダーポジションに登用したくなるのはどんな人材か?
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
デジタル・フォレンジックの最新動向(2024年4月27日情洛会総会特別講演スライド)
 
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
自分史上一番早い2024振り返り〜コロナ後、仕事は通常ペースに戻ったか〜 by IoT fullstack engineer
 

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 増えて欲しい・・・