dRubyは過去に多くの大規模システムのメッセージングシステムとして使われてきた。そのうちのいくつかはやがて専用のキューイングシステムに置き換えられたりもしているが、Ruby Standard Libraryに含まれているため、素早く複数のシステムを協調させるためのシステムを構築できるのがdRubyの魅力である。
Hatena Screen Shot (http://www.hatena.ne.jp/)
Hatena は日本を代表するインターネットカンパニーで、ブログ、ソーシャルブックマークサービスなどを提供しているが、2006年当時(現在はサービス終了) Hatena Screen Shotという、登録されたURLのスクリーンショットをサムネイルとして表示するサービスを行っていた。 このサービスのアーキテクチャーのユニークな点にWebフロントエンドはLinux上に構築されているが、スクリーンショットの撮影はWindowsのIEコンポーネントを用いて実現されていることにある。これはWindows環境の方がスクリーンショットを撮影できる環境が整っていたためであるが、クロスプラットフォーム間のシステムを協調させるdRubyを使った良い例といえよう。またスクリーンショットマシーンは並列処理が行われていたため、スケーラビリティも確保されていた。
- http://video.google.com/videoplay?docid=-7846959339830379167
- http://www.slideshare.net/Blaine/scaling-twitter
- http://twitter.com/#!/blaine/status/136233009866215425
Twitter は以前StarlingというRubyで作られたQueuingサービスを作っていたが、その前にdRubyとRindaを使用していたようである。SDForum Silicon Valley Ruby Conference 2007でBlaine Cook氏が行った「Scaling Twitter」というトークの中でdRubyのことを「Stupid Easy, Reasonably Fast, Kinda Flaky」と形容している。
Buzztter(http://buzztter.com)
Buzztterはツイッターのツイートからキーワードを摘出するサービスで、ツイッター自身が「トレンド」を提供する前からサービスを提供している(咳さん:何年からサービス提供しているか確認できますか?)。単語の抽出の難しい日本語のキーワード摘出を提供している点で、今でも有用なサービスである。Buzztterはいくつかのサブシステムで構成されるが、Twitter API (HTTP)を用いて文章を集めてくる分散システムにおいてRinda(dRubyを利用した分散プロセス協調機構、後の章で説明)を利用している。現在ではその部分はRabbitMQに置き換えられいるが(咳さん:shidaraさんに確認とれますか?)、2007年11月当時の調べでは1日に125000件、72MB相当のデータを扱っていた。
著者が作成したdRubyを使用したWikiシステムで自身の職場で現在も稼働中である。10年以上に渡って運用されているため、40000ページ以上、インメモリのサイズは1GBを超えている。内部にRDBMSは持たず編集ログをプレーンテキストでログしており、システムの再起同時にはそのログを読み込むことで永続化を実現している。 Wikiの内容はアジャイル開発によく使われるストーリーカードの内容などが多い。dRuby経由でRWikiに直接つなぎにいき、TestSuiteを自動生成するためのスクリプトなどが用意に書けるのも便利な点である。