HOKYPOKY.BLOG

サーバーの構成メモ

Rackspaceが使えるようになったのでいよいよアプリケーションを作っていきたいところ。せっかく自前で作るのだから新しい技術を率先して使っていきたいのと、なるべくサーバースペック(主にメモリ)を消費しない形で実装したい。Railsだけは別で、これがないとボクはWebサービス作れない。

今のところ考えている構成

nginx

http://nginx.org/
ロシア製のWebサーバー。Apacheは汎用性が高いが少々高負荷。最近ではドキュメントもちらほら出てきている。後述するunicornにRailsの処理を任せてしまうのでURL RewiteとVirtualHostの定義くらい。

Ruby Enterprise Edition

http://www.rubyenterpriseedition.com/
省メモリのRuby。1.8.7ベース。どうやらGCなどの仕組みがちがうらしい。実際にRailsはメモリを消費しまくるのと、unicornによるインスタンスの生成、削除が激しいのでこちらの方が効率がいいようだ。Ruby1.9.2も考えたが、他のライブラリ的に時期早尚であることと、メモリ的にはREEの方が優勢。

Ruby on Rails 3

http://rubyonrails.org/
先日メジャーバージョンアップがリリースされた最新のRuby on Rails。Rails3のコアがミニマムになり、抽象クラスが定義されていることでプラグイン間の連携がスマートになった。現段階ではRails2と比べるとプラグインの対応が行き届いてはいないが、移行が多少めんどくさいので最初からRails3でいくことにする。

Unicorn

http://unicorn.bogomips.org/
RailsサーバーというよりはRackサーバー。Unicorn自体がロードバランサーでインスタンスの生成や割り振りの効率がいい。

MongoDB

http://www.mongodb.org/
どうせクラウドなのだからネットワーク分割耐性のあるデータベースにしようと、リレーショナルデータベースではないものの中でこれを選択。ドキュメント指向のデータベースというものらしく、スピードはMySQLよりも早く、可用性を犠牲にする代わりにネットワーク分割耐性がある。ActiveRecordではなくmongoidを使うのでソースは多少変わるが、Rails3よりActiveModelが定義されているおかげでかなりRailsライクだし、そもそもSQLをむりやりORMで動かすよりいいんじゃないかという気になったりしている。そして、速度の対価としてHDDを結構食らう。

monit

http://mmonit.com/monit/
監視ツール。サーバーが落ちたりしたときにある程度復旧してくれたり、メールでアラートしてくれる。

探しているもの

Rails OAuth 1.0a プラグイン

Rails3になって今一番やっかいだなとおもっているのがこれ。
時間が解決してくれるとは思っているが(他力本願)、Rails2で使えていたOAuth系のプラグインがこぞって使えなくなっている。DeviseやWarden_oauthをなんとかRails3に入れたい。ドキュメントが薄いのでソース読むしかないな。

仲間が欲しい!

まわりにRailsやってる人がいなくて、基本独学なのでいろいろと分からないことも多いです。
@nijitaro でTwitterやっていますので気軽にフォローして情報共有しましょうー!