Twitterが、Ruby on RailsからJavaVMへ移行する理由

2011年8月2日

オライリーが主催するイベント「Open Source Convention 2011」が7月25日から米国ポートランドで開催されました。

その中で、TwitterがなぜRuby on RailsベースのシステムをJavaVMベースへ移行しようとしているのかを解説したセッション「Twitter: From Ruby on Rails to the JVM」が行われ、ビデオが公開されています。

13分程度の短いセッションのポイントをまとめて紹介します。

世界最大のRuby on RailsによるWebサイトをJavaVMへ移行

Twitterのアプリケーションサービスグループ、Raffi Krikorian氏

fig

Twitterは世界中からのツイートをリアルタイムで扱っている。リアルタイム処理が、ツイッターにおけるもっとも難しい処理だ。

Twitterは、おそらく世界最大のRuby on RailによるWebサイトだ。いまも大部分のトラフィックをRubyで処理している。

しかし2008年から、その処理をJavaVMへ移行しつつある。私たちのチームはいま、主なTwitterのアプリケーションを分解し、JavaVM上に作り直している。

その理由をこれから紹介しよう。

私たちは秒間数千もの大量の同時コネクションを処理している。これまで私たちはこの大量のワークロードのためにRubyで多くのことをしてきた、MRI(Matz' Ruby Implementation)にパッチを当て、ガベージコレクションを改善するなど。

Rubyはこうした処理をこなしてきたが、私たちはもっと大きなコミュニティ、デベロッパ、よりよいツールなどによって、いま向かっている方向へさらに大きく前進する機会を見つけようとしている。それがJavaVMだ。

JavaVMを採用する理由の1つはフレキシビリティだ。Twitterでは、ストレージレイヤにはScalaを使っているし、それ以外にJavaも使っていて、最近ではClojureも使い始めた。JavaVMはこれらのデプロイもログ解析もシンプルに実現してくれる。

fig

JavaVMへ移行する最大の理由は、リアルコンカレンシーモデルだ。

これまでリクエストに対してワーカーが走るワーカーモデルを採用してきた。しかしこれは思ったより性能がよくない。

JavaVMでジェネリックなRPCモデルを実現するFinagle(発音は“ファネーグル”のようだ)をオープンソースで開発した。非同期なイベント処理をJavaVM上の言語でエレガントに書ける。Rubyでやっていたのと同じことを、さらに効率的に実現できる。

私たちは、ユーザーからリクエストが来たら、数百台のサーバにそれを投げて、そこからくる大量の返事をまとめあげる、という作業を50ミリ秒以内に実現する、ということをしたかった。

Rubyでは1つ1つにたいして順に処理をするようなコードになっていた。

私たちのやりたいことは、一発ですべてのサーバへリクエストを投げ、それをまとめるような処理である。JavaVMは基本的に、このようなRubyではできないことを実現できた。

また大量のメモリやCPUを載せたマシンではJavaVMのほうがネットワークI/Oなどでずっと効率よく動作した。それによりサーバ密度を高めることができるようになり、コスト削減を実現できる。

TwitterはRuby on Railsのスケーラビリティも証明してきた

TwitterがRuby on RailsからJavaVMへ移行しようとしている背景には、言語の柔軟性や非同期処理、JavaVMの性能などがあると説明されています。

これらの説明からJavaVMへ移行する理由が伝わってきますが、一方でTwitterはこれだけのスケーライビリティや性能が要求される段階までRuby on Railsで対応できることを証明してきたともいえます。世の中のほとんどのアプリケーションでは、Ruby on Railsで十分に実現できるのだといえるのでしょう。

このセッションではJavaVM上のJRubyには触れていませんが、彼らがJRubyについてどう考えているのかも気になるところです。

この記事ではビデオの内容を基に内容をまとめたのですが、一部早口の英語でうまく聞き取れなかった箇所もあります。もしも勘違いなどが含まれていたら、ぜひコメントなどで教えてください。

追記:Krikorian氏が自身のブログへのエントリ「Ruby and the MRI to lots-of-stuff and the JVM」で、このセッションの補足として、なぜJRubyに言及していないのか、そして今後もRubyに投資し続けていくことなどを書いています。

関連記事

このエントリーをはてなブックマークに追加
follow us in feedly

タグ : Java , Ruby , Twitter



≫次の記事
オープンソースのOpenStackと、オープンハードのOpen Compute Serverを組み合わせた企業向けのクラウドアプライアンス「Nebula」が発表
≪前の記事
存在感が高まるOpenStack。デルがクラウド構築パッケージを発表。HPもプロジェクトに参加

Loading...

Blogger in Chief

photo of jniino Junichi Niino(jniino)
IT系の雑誌編集者、オンラインメディア発行人を経て独立。新しいオンラインメディアの可能性を追求しています。
詳しいプロフィール


Publickeyの新着情報をチェックしませんか?
Twitterで : @Publickey
Facebookで : Publickeyのページ
RSSリーダーで : Feed



Publickey 最新記事 10本

Publickey Topics 最新記事 10本


PR - Books


fig

fig

fig

fig



blog comments powered by Disqus