是非に及ばず

プログラミングに関する話題などを書いていきます(主にRailsやAndroidアプリ開発について)

RubyKaigi2009 2日目 レポート(感想)

とりあえず、会社の人にも見せようと思ってPowerPointにまとめたんだけど、ブログにもちょっとだけ書いておこう。
使用している技術要素に関しては、自社とほとんど変わらないんだけど、圧倒的にアクセス数が違うなぁという感じがした。

ニフティ

ニフティ流のケータイポータルサイトの作り方について。
サービスごとに機能を作っていく開発スタイルを垂直統合型、共通機能をAPIという形でサービスとは分離する開発スタイルを水平分業型とニフティでは呼んでいる。
後者は、APIの仕様や性能の制約を受けるものの、開発コストを下げる事が出来たり、メンバーの入れ替わりが激しい場合でも、対応しやすいなどのメリットがあるとの事。
自社サイトでも、画像変換/メール送信/認証などAPIとして切り出せそうだなぁと思った。
ライブラリとして、Ruby/Rails/jpmobileが紹介されていた。やっぱりこの組み合わせは鉄板だよね(自分も使ってます)。

リクルート

Railsサイト安定運用の心構えについて。

    • RailsのサイトのPVなど
      • 8サイト合計で、月間6000万PV
      • データ転送量は月間4.5TB
    • Ruby/Railsのバージョン
      • Rubyは基本的に1.8.6(RubyEnterpriseEdition)。1.8.6でライブラリなどが動かない時は柔軟に対応
      • Railsのバージョンは1.2.xから2.3.xまでバラバラ(古い時期から作ってるから)
      • その時々の安定バージョン、または最新版を使っている
    • 実行環境
      • mongrel, thin, Passengerなど試行錯誤中だが、今後はPassengerに寄せていこうと考えている
      • いくつかのサイトでは既にPassengerで動いている
      • パフォーマンスの面でもmongrelと比較したら2割ほどPassengerのほうがレスポンスが良かった
    • 仮想サーバによる運用
      • Railsの載っているサーバは、全て仮想サーバ(VM)で動いている
      • 1台のホスト上に13台のVMが稼動している
    • mongrelの最適なインスタンス
      • VMの場合、メモリ1GBで10個、メモリ2GBなら24個くらい

楽天

楽天Railsサイト運用と楽天製KVS(KeyValueStore)であるROMAに関して。

    • アクセス数
      • 非常に多い、300万リクエスト/日
      • ピーク時は350リクエスト/秒
    • Railsのパフォーマンス
      • 実践投入前にCakePHPとの性能比較を行った
      • CakePHPと比べてもRailsは悪くない
      • CPUの限界が、Railsの限界になった。サーバ増やせば解決=スケールアウト可能
    • パフォーマンス改善
      • サーバのメモリは、キャッシュ用に500MBくらい残して使い切るくらいがベスト
      • DBは常にボトルネックになる。Railsではモデルに手を入れて、テーブル分割で対応
      • KVSの利用も検討すべき。楽天では当然ROMAを検討中(普通の人はmemcachedTokyoCabinetあたりでしょうね)