Posted filed under Ruby on Rails.

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などかなり幅広く取り扱ってる。

「テストが難しいコードは使うのも難しい」ってのに納得。

参考サイト

p.s
 昨日デジカメ壊しちゃって急に買ったから写りが悪い・・・・