RubyからScalaやJavaへの移行について、Twitterのエンジニアが語る

Twitter Engineer Talks About the Company's Migration from Ruby to Scala and Javaを翻訳しました。

※ Google翻訳ツールキットの試行も兼ねています。


f:id:teppei-studio:20110709083206p:image:leftTwitterRuby on Rails を活用していることで有名ですが、サービスが拡大していくにつれて、コードの一部を他の技術に移行してきています。同社はバックエンドのメッセージキューの実装をScalaに移行 することから始め、バックエンドの検索をJavaで再構築することを継続し、最近では検索処理のフロントエンドを Java サーバに置き換えました 。

InfoQは、Twitterのエンジニア、エヴァン・ウィーバーにインタビューを行いました。彼は、この変革についてより詳しく説明いてくれています。




興味深いのは以下のポイントです。

  • Twitterでよく使われる言語は、JavaScriptRubyScalaJavaです。時々、C言語も同様に使われます。
  • TwitterでのRubyの利用の仕方として、JavaScriptがフロントエンドを引き継ぎ、JVMベースの言語はバックエンドを引き継ぐといった使い方は縮小しています。
  • 一般的には、バッググラウンドにRubyを持つTwitterの開発者はScalaを好み、バックグラウンドにC / C + +を持つ開発者はJavaを好む傾向にあります。
  • 検索チームは、Lucene使用し、Javaを経験しました。彼らにとっては、JavaScalaRubyよりも便利なものなのです。
  • TwitterFinagleと呼ばれるライブラリを、非同期のRPCサーバ・クライアントを作るために、JavaScala、あと何かJVM言語で使いました。
  • TwitterでのScalaJavaへの移行は、パフォーマンスやスケーラビリティのためというよりも、カプセス化の必要性のために起こっていて、既存のRubyコードの多くは当分の間使えるものです。
  • Twitter検索がSOAの方向に向かっていくにつれて、静的型付けによって生産性の恩恵を受けています。

インタビューでは、Rails よりもScalaを好むという、もっと特定の技術的な理由、例えば垂直統合がより良くなるとか、について掘り下げています。ウィーバーはまた、Twitterの全体的なアーキテクチャについて語っていてくれて、それについはここで網羅しています。。