Twitterにおけるオープンソース利用の現状

TwitterのChris Aniszcykが今朝(米国時間8/30)、CloudOpenで講演し、Twitterにおけるオープンソースの利用について語った。

彼の話を聞くと、Twitterのようなビッグな企業がインフラのスケールアップのためにオープンソースの技術を有効利用している内幕がよく分かる。それは企業世界が今後関心を持つべき、新しい話題でもある。

Aniszcykは、Twitterがそのサービスを管理するために依存しているオープンソース技術の概要を述べた:

  • ツイートのメインのストレージとして利用しているのはMySQLである。MySQLの同社独自のフォークをオープンソースで開発することにより、源流コミュニティの協力を求めている。MySQLは、オープンソースの関係データベースである。
  • さまざまなApacheプロジェクト…CassandraHadoopLucenePigなどなど…をアクセス分析や検索などサービスの重要成分で活用している。もちろんオープンソースだから、それらのプロジェクトへの貢献もしている。TwitterはApache Software Foundationのスポンサーでもある。CassandraはNoSQLのデータベース、Hadoopは分散ファイルシステム+ビッグデータコンピューティング、Hadoop上のビッグデータ分析のために使っている高級言語がPigだ。Luceneは、オープンソースの検索テクノロジ(多国語対応)である。
  • 絶えず増大している同社のトラフィックに対応する、スケーラビリティに富むキャッシングインフラとして、Memcachedを多用している。TwitterによるMemcachedの独自実装Twemcacheを、同社は最近オープンソース化した。Memecachedが提供する巨大な分散オンメモリキャッシング技術によって、データベースの過負荷を回避できる。

Twitter自身が開発してオープンソース化しているソフトウェアには、次のようなものがある:

  • Iagoはテスト用の負荷生成プログラムで、サービスを本番の負荷にさらす前のテストに用いる。
  • Zipkinは分散トレースシステムで、サービスのタイミングデータを集める。Twitter APIへのリクエストを管理するために、そのデータを利用する。タイミングの調整により、Twitterをより速くできる。
  • ScaldingはHadoopのMapReduceジョブを楽に書けるためのScalaライブラリだ。ScaldingはScalaからCascadingを利用するために作られた。後者はJavaデベロッパがHadoop上でビッグデータアプリケーションを構築するためのフレームワークだ。このフレームワークが複雑なMapReduceを抽象化することによって、Hadoopのクラスタの管理が容易になる。MapReduceは元々、Googleが検索データを処理するために開発した分散並列ビッグデータ処理コンピューティングモデルの、はしりのようなソフトウェアだ。Scalaは、Javaをラップした…(言語の原作者によるオリジナルの実装は)これまたオープンソースの…汎用プログラミング言語で、よく使われるプログラミングのパターン…ときにはその改良版…を、言語本体と標準ライブラリの両方で実装している*。

〔*: Scalaで書かれている有力Webサービスは、Twitter、LinkedIn、Foursquareなど。〕

FacebookやGoogleも、自社開発技術の多くをオープンソース化している(またはそれらの忠実なクローン製品がオープンソース化されている)。その結果は、企業においてとりわけ顕著だ。たとえばMapReduceの(Apacheによる)オープンソース実装Hadoopは、最初はYahoo!が開発し、今ではビッグデータプロジェクトの最重要な基盤技術として企業向け市場で頻用されている。

広告

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中