12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Treasure Dataで働くRuby

Last updated at Posted at 2014-12-26

中村です。最近はセキュリティ方面のお世話だけでコードの貢献はしていませんが、CRuby、JRubyコミッタもやっています。

Treasure Dataを支えている各種システム、バックエンドのコアはJava中心、追加でScala/C/Pythonですが、多くの場所でRubyも使われています。12/25にRuby/2.2がリリースされたのに合わせて、Rubyの使われ方をご紹介しましょう。(本記事は12/26に執筆しています)

Client side

まずはTreasure Dataのシステム側でなく、クライアント側で動くRubyです。

Treasure Agent (Fluentd) package (td-agent)

Treasure Agentは、OSSであるRuby製ログ収集インフラFluentd: http://www.fluentd.org/の各種OS用パッケージ版です。Treasure Dataにログを入れるのに必要なプラグインが同梱されていますが、インストールすると出てくるのは環境設定済みfluentdなので、パッケージ版Fluentdとして使われています。動作環境はMacOS X 10.8, 10.9、RHEL/CentOS 5, 6、Ubuntu 10.04, 12.04 (, 14.04)

またtd-agentはサーバ側でも動いていて、JavaScript、iOS、Android、Unityの各SDKが投げてくるイベント群を受け付けています。

パッケージとしてはRuby 1.9.3を同梱していますが、そろそろ上げるタイミングですね。

(追記: 上記はtd-agent 1の話で、すでにtd-agent 2がリリースされています。すいません。そちらはRuby 2.1.3が同梱されています。詳しくはこちら: Treasure Agent(td-agent)の1と2の今後 移行手順もあります)

TD Toolbelt (td, td-client)

Treasure Dataの各種機能をコマンドラインから利用するためのツールです。一部、ファイルアップロードの前処理性能のため、Javaを使っているところもありますが、そこ以外はすべてRubyで書かれています。動作環境はMac OS X 10.8.5以後、Windows 64bit、RubyGemsの動く各種Linux。(つまり全部OSSです)

Mac OS X版とWindows版はこちらもRuby 1.9.3を同梱しているので、そろそろ上げるタイミングです。

Server side

続いてサーバ側。Treasure Data内部で使われるRubyです。

Console & API

ConsoleとAPIは共通(デプロイ先は別)のRailsアプリです。共通コンポーネントがHeroku、EC2、IDCFクラウド環境で動いています。APIは特にリクエスト数、処理負荷とも大きいので、非正規化して破壊的チューニング。。。よりは、プロセス/ノードを並べてスケールさせるRubyおよびRailsらしい作りになっています。

Task Scheduler、Coordinator

ConsoleとAPI、またはスケジューラが登録したタスクを管理しているのもRubyです。タスクにはHadoopジョブ、Prestoサーバ連携、外部データエクスポート、Consoleへのエコーバックなどがあり、それらをスケジュール、つなぎ、リトライなどのフロー制御を行います。コア部分はOSSとして公開されています。

  • PerfectQueue - at-least-once、ポリシーベースのフェアな優先度付きキュー、ワークフロー制御サービス
  • PerfectSched - at-least-onceのスケジューラサービス

その他

インフラ構築、運用もRuby(chef)で動いています。これについては別途専任のプロがいるので、記事を書いてくれるかもしれません。その他汎用的に利用できるコンポーネントはOSS化の流れができていて、今後新プロダクトで、JRubyも採用するかもしれません。

まとめ

Treasure Dataを支えているRubyコンポーネント群を紹介しました。OSS化されているものが多いので、興味があればぜひコードを覗いてみてください。

12
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
12

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?