RailsConf 1日目はTutorial/Guidebook day。
registrationをすませた後は”Scaling a Rails Application from the Bottom Up“に参加してみる。
その名の通り、下位層からRailsのスケーリング話。
スピーカーはJoyentのCTO Jason Hoffman。
前半、Guidebookの写真とか撮っててあんまり聞いてなかった
Joyentの構成とハードの話し
- OSはLinux/FreeBSD/Solaris
- ディスクはSunFire X4500(RAIDZ2+1 likes RAID6+1) and NetApp NAS
- ベンチマークで10,000op/sec, 80-100Mb/s
ハードウエア
- ベンダーはDELL > HP > Sun
- DELLは直接色々してくれるけど、Sunはリセラーに丸投げ
- 本体が$5,000でも電気代が3年で$1,800以上かかる
- colocationに置くと、回線代>電気代>ラック代
- 電気代がネック。Vritualizationでマシンを減らす?<よく分からなかった
それでもSunを選ぶ理由
- RAS(Reliability、Availability、Serviceability)=信頼性、可用性、保守性
- コンポーネントがホットスワップ対応 (対応ハードが必要)
- CPU、メモリ、TCOが結構安い
- シリアルで色々な操作ができる
仮想化大切
- Xenとかあるけど、Solaris Zoneが良い
なんでSolaris?
- PXEブートをサポート
- 高負荷でも落ちない (Xenは落ちるって話し)
- ネットワークの統合や仮想化もできる
- 仮想化が軽い
- ZFSがある
ZFS
- 使いやすく強力なファイルシステム
- Dynamic Stripingやremote replicationがある
Ruby
- FCGI, mongrel, JRuby(Glassfish)のどれで動かす?→mongrel
joyentの構成
- 16GM 4 AMD-CPU
- SolarisZoneを使って、4つのコンテナーに分ける
- コンテナーごとに10個のmogrelを起動
水平スケール
- Railsはマシン(mongrel)を増やせばOK
- DBはmiddlewareでやる
Mongrelは、Apacheやpoundじゃなくて、BIG-IPで振り分け
- Layer7スイッチでやっちゃう
- URLのノーマライズとかもここでやっちゃう
- Railsを動かしてるマシンはmongrelだけ稼働
- 静的ファイルは、別マシンでApacheを稼働
- BIG-IPじゃなくフリーでやるなら*** <書き漏らしたので後で調べる
ストレージはRDBMSだけじゃないよ
- Memcache (有名だし使うの簡単)
- LDAP
- J-EAI (message bus in memory, twitterでも使ってる?)
- Fileファイルシステム
J-EAI
- XMPP-Jabber message bus for XML
- クラスタリングをサポート
- Erlangで書かれてる
- SMTP, JDBCでも接続可能
- App < -> Bus < -> database
- (でも私には使い方っていうか、使い道が分からない。サーバ間連携につかえってこと?)
ファイルシステムの制限
- 1ディレクトリは40000ファイルがMAX、普通は10000まで
- 16×256ディレクトリを作って、ハッシュして格納するキーを作って格納する /data/76/34/4534
- crypt()だとエスケープが必要だからMD5を使え<ハッシュ
- 37signalsのjamisが同じ事を考えてる → ID Partitioning
忘れちゃいけない
- DNSはpowerdnsがイイ
- backendをmysqlとかLDAPにできる
- Webインタフェースもある
午後のセッションはGuidebookに参加。
朝から、イベントカレンダー作りを通じて、初心者向けにRailsを解説。
テストやAjax、RESTなどかなり幅広く取り扱ってる。
「テストが難しいコードは使うのも難しい」ってのに納得。
参考サイト
- Joyeur: Joyent at RailsConf 2007
- hitokuro rails 注意散漫メモ – Scaling a Rails Application from the Bottom Up” Jason Hoffman (Room: Oregon Ballroom 204)
p.s
昨日デジカメ壊しちゃって急に買ったから写りが悪い・・・・