Twitter、Ruby on RailsからScalaへ 31
ストーリー by reo
路線変更 部門より
路線変更 部門より
ある Anonymous Coward 曰く、
Twitter は Ruby on Rails で構築されたそのインフラを徐々に Scala に置き換えているそうだ (Technology Review の記事, 本家 /. 記事) 。
Twitter ではフロントエンド、バックエンド共に Ruby on Rails が使われていたが、最近では大量のメッセージを処理できず「Fail Whale」出現の原因となったりしていた。このため Twitter の開発チームは代替言語として Scala を採用、少しずつバックエンドやインフラを Scala に置き換えているそうだ。スイス連邦工科大学ローザンヌ校の Martin Odersky 氏によって開発された比較的新しいプログラミング言語である Scala は並列プロセスの処理に長けている点が Twitter に向いており、また言語としてのフレキシビリティも開発にとっては魅力とのこと。短所としては、機能も多く、シンタックスも見慣れた感じでは無いため習得が簡単ではないことと、新しい言語であるため実績がまだ少ないことだという。それでもTwitterでは多くのテストケースを成功させており、Scala の方がメリットが多いと考えているようだ。
開発チームはフロントエンドは Ruby on Rails のまま、年内には API リクエストの一連の処理を Scala で行えるようにしたいとしている。
Erlangは? (スコア:2, 興味深い)
http://www.atmarkit.co.jp/news/200704/27/erlang.html
twitterのコアはErlangらしいので、関数型言語を採用するならErlangが自然なのに何故Scalaなのだろう、というのが疑問です。
両言語にそれほど知悉しているわけでもないのでアレですが、Scalaに機能優位があったりするのでしょうか。
識者の意見を伺いたいです。
Re:Erlangは? (スコア:3, 興味深い)
の記事に twitter を作った Evan Williams とブロガーの小飼弾との対談が書かれています。
> 弾:「Erlangを使っているって聞いたけど。」
> Evan:「Erlang?ハア?」
> 弾:「Erlang言語をメッセージングサーバに使っているって聞きましたが、本当?」
> Evan:「ああ、そのErlang。ノー。Rails以外のサーバはあるけど、すべてRubyベース。」
> 弾:「全部?」
> Evan:「今は全部・・・だと思う。将来はともかく、現在は。」
う~ん、本人もtwitterの中身についてよくわかっていないらしいから、
どうもErlangが実際に使われているのかいないのかわかりませんね。
そもそもErlangを使っているなんてウワサはどこから出てきたんだろう?
Re: (スコア:0)
>ああ、そのErlang。
弾氏も日本人の例に漏れず
英語(かな)の発音がよろしくなかったのかな…
#しくみ本は結構好きなのでAC
識者じゃないけどわかる (スコア:2, すばらしい洞察)
Re: (スコア:0)
意外とアタリじゃないかという気がするんだが
Re: (スコア:0)
そんな理由で開発言語を選べるのが本当に心の底からうらやましいです。
日本ではありえませんね。
Re: (スコア:0)
日本のすみずみまで知り尽くしているACの存在がある限り、twitter何するものぞ
何するものぞ
Re: (スコア:0)
>日本ではありえませんね。
そういう理由で言語を選べる一部上場企業、少なくとも一社は知ってるな
日本でも意外とあるんじゃない
Re: (スコア:0)
日本の真ん中にいるナニな大手SIerでは有りえない、というなら100%賛同。
俺やキミがそれ以外の良好な職場にめぐり合えていない、ってのも100%賛同orz
#頼む、開発環境をもーちょっと自由にしてくれ。あとはなーーんにもしないから…なのでAC
Re: (スコア:0)
それなら、是非、ウチに!
Re:Erlangは? (スコア:2, 興味深い)
Erlangについて少しだけ触れている記事がありました。
http://highscalability.com/scaling-twitter-making-twitter-10000-percen... [highscalability.com]
詳細は分かりませんが、試しに使ってみたけど、ドキュメントが少なくてサーバを安定稼働させるところまで行かなかった……というところでしょうか。
Re: (スコア:0)
Re:Erlangは? (スコア:1, 興味深い)
Re:Erlangは? (スコア:1)
やっぱりこれからは (((Lisp))) なんですね。
Re: (スコア:0)
性能を理由にRubyからの移行ならlispがベストな選択だとは思えない。
Scalaは (スコア:1)
Re: (スコア:0)
昔はejabberdだったらしいですが、途中でOpenFireに乗り換えてますよ。
c.f. TwitterがOpenFire(Javaで書かれたJabber Server)を採用 [s21g.com]
別枝でインタビューが云々あったけど、twitter自身はErlangを使わなかった(単なるejabberdのユーザだった)から頓珍漢なやり取りになったのではないかと推測。
ちなみにFacebookはC++とErlangだそうです (スコア:0)
Facebookチャットアーキテクチャー
http://www.infoq.com/jp/news/2008/05/facebookchatarchitecture [infoq.com]
日付 (スコア:1)
Technology Reviewの記事、4/1のものですが、大丈夫ですよね?
Re:日付 (スコア:2, 参考になる)
http://www.artima.com/scalazine/articles/twitter_on_scala.html [artima.com]
こっちなどは3日になっていますし、web 2.0 expoで発表したようなので、大丈夫じゃないでしょうか。
http://www.slideshare.net/al3x/why-scala-for-web-20 [slideshare.net]
逆に、COBOLで組むとか、IBMのメインフレームで再構築くらいじゃないと、4/1では面白くないです。
Re:日付 (スコア:1)
まぁPlankalkül [wikipedia.org]にマイグレーションとかのレベルでないと面白くないのは分るんですが…。
ナイと言い切るのもどうかなぁと思った次第です。
このブログ記事によると (スコア:1, 参考になる)
Re:このブログ記事によると (スコア:1, 興味深い)
「Unlimited Novelty: Twitter: blaming Ruby for their mistakes?」を読むといろいろ参考になります。
Scalaへの移行のロジックは以下のようです。
RubyのGCがたこで(mark-sweep方)、ゆっくりとメモリーがリークする。GCとしては、JVMが優秀。
JVM上のJrubyは標準の環境よりパフォーマンスがすぐれているが、JVM上で動くScalaの方がさらにパフォーマンスがよい。
Re: (スコア:0)
Ruby1.9もダメなんだろうか?
#Railsが動くかどうかは知らん。
どうでもいいけど (スコア:0)
Ever17とNever7の広告が表示されるんだけどなんの言葉に反応してるの?
Re: (スコア:0)
doubleclick.netのトラッキングcookieを持って行ってる見たいなので、
それっぽい嗜好のサイトを回ってたら出るんじゃないんですかね?
よく知らないけど。
# オフトピなので沈めちゃってください
Re: (スコア:0)
たぶん、その人が過去に見た商品に関連するものを出している。
Re: (スコア:0)
Never Ever
「そんなことはない、いままでもこれからも」みたいな強い否定の意味で用いられます。
# ん?
そういやGoogle App EngineがJavaに対応したんだっけな (スコア:0)
Scalaはシンプル…? (スコア:0)
なんかごちゃごちゃした印象をぬぐいきれませんね。
アクターとオブジェクト、メッセージとメソッド、パターンマッチとポリモーフィズムといった同根のよく似た概念が混在していて、あまり美しいとは…
Re: (スコア:0)
関数型とOOP型とは
ネタがカブるとか相容れないとか色々相性が悪いからねえ…