RubyKaigi 2日目[ruby][rubykaigi]
Ruby会議2日目に行ってきました
分散並列処理フレームワークfairy
- スピーカー
- 増田 創さん
- What's fairy?
- なぜ分散処理?
- 大規模なデータを効率的に処理、分析できる企業が勝ち組となる
- MapReduceとは?
- オリジナルはグーグル
- Map
- 入力データ->キーと値に分ける
- Reduce
- 同じキーで値をまとめたり?
- 上記を複数サーバで
- fairy同様な他の実装
- starfish
- hadoop
- 現状ステータス
- fairy詳細
- Filter I/F
- inputでデータを読み出し
- filterで数珠繋ぎ
- fairyのノードホストのローカルディスクに分散配置.vfファイル
- Filter I/F
- build in filter
- 生産性
- 13倍高速化
- 1ヶ月つくっていたのが2.5日で実装できた
- サーバ6台
- パフォーマンス
- filterが数珠繋ぎなのでそこでコストが高くなっている
- filterを追加すると想定以上に遅くなっている
分散オブジェクトシステム DeepConnect
- スピーカー
- DeepConnectとは
- 分散オブジェクトシステムを実現するためのフレームワーク
- fairyで採用
- DeepConnectってなにしてくれるの?
- ネットワーク越し、または、別プロセス空間上のオブジェクトに対して、
- メッセージを送ったりその結果を得ることが出来る
- drbの親戚
- ネットワーク越し、または、別プロセス空間上のオブジェクトに対して、
- DeepConnect server
dc = DeepConnect::start(port) dc.export("name",obj)
- DeepConnect client
dc = DeepConnect::start(port) ds = dc.open_deepspace obj = deepspace.import("name")
- 特長
- メソッドは引数も戻り値も参照渡し
- 参照渡しであればリモート、ローカルに実態があるかは意識しなくて良い
- コードの修正が少ない
- メソッドは引数も戻り値も参照渡し
def basic_seach(&block) @map_proc = BBlock.new #inputの実態がどこにあるか意識しない? @input.each do |e| block.call @map_proc.yield(e) end end
- Future型
- 分散GC
- ShallowConnectモード
- DeepConnectは、接続先にたいしてどんなメソッドも呼び出せてしまう
- CORBA IDL的に指定可能
- I/F宣言されたメソッドだけを利用可能
- 実績
- fairyで採用
- fairyローカル版->fairy分散版への実装修正は5%くらい
- ローカルで動いていようがネットワーク分散環境で動いていようが関係ない!
- 注意事項
- あまりにも分散を無意識に出来てしまう
- 構文上ローカルで動いているものと同じでもネットワークコストを意識しないといけない
- Arrayも参照渡し
- パフォーマンス
- あまりにも分散を無意識に出来てしまう
- 予定
- 使ってみたい方は石塚さんにメールを
- fairyがopensource化されるころには。。。
実戦投入Rails - RubyKaigiEdition
- スピーカー
- 実践投入Railsの背景
- WEB+DBでは大人の事情で言えないことが、、、
- 具体的に携わっている業務システムの事柄
- WEB+DBでは大人の事情で言えないことが、、、
- 上記記事のクライアント
- 業界最大手
- 人事管理システム
- 雇用、退職、部署間、給与管理
- 10万人以上雇用している
- 既存の運用中のシステムあり
- 大炎上
- お客さんとの関係が最悪
- 会社ごとバックれる
- 書置きのこして去る
- 億単位の赤字
- 1 column追加するのに1-2人月
- Railsを提案
- 実績はあるのか?
- 既存システムとRailsの共存
- 既存システムを無理やりレールに乗せる
- ナチュラルキー
- set_primary_key
- 複合キー
- composit primary key?
- セッション
- 自作
- リリース後のバグも数回程度
- 昨日資料を作っているときに丁度
- 昨日資料を作っているときに丁度
- 10万人userのシステムをRalisで作れた!
- 初期の開発効率よりもその後の運用にRaisは適している
Railsサイト安定運用の心構え 8つのサービスから学ぶ
- スピーカー
- Rails製サイト
- 演劇ライフ
- コマーシャライザー
- 旅箱
- rectr
- atnd
- Rails製サイト合算のスペック
- passengerを使う予定
- 運用が楽
- パフォーマンスが良い
- thinやmongrelよりも2割り位パフォーマンスが良い
- Rubyのver
- 基本的には1.8.6
- Rubyのenterprise editoin
- Platform
- 1VMあたりmonrelを動かせるか
- DBチューニングTips
- 経験
- リリース時にDBチューニングがされてない
- ARつかうので意識が回らない
- app側のコーディングに頭がいってしまう
- 実践
- 経験
my.cnf
[mysqld] log-slow-queries long_query_time=1