茨城県つくば市のつくば国際会議場にて日本Ruby会議2010が開催されています。本日は3日目,最終日です。本稿では,3日目の模様を随時レポートしていきます。
今年も世界各地からRubyistのみなさんが参加されています。
Kei Hamanakaさん,Yuichi Saotomeさん「Rubyでクラウドを便利にする方法~ニフティクラウドの事例~」
@niftyからは,WebアプリケーションエンジニアのHamanakaさんと,インフラエンジニアのSaotomeさんが登壇し,ニフティクラウドがWebアプリケーション開発をどのように変えるのかを紹介しました。
@niftyでは,ココログ広場やアバウトミー,@nifty TimeLineなどのRuby製・Rails製アプリケーションが数多く運営されています。いざ,Webアプリケーションを開発しようとすると,「インフラ設計」「サーバ調達」「ミドルウェア設定」といった下準備は避けて通れない道であり,なかなかに大変な作業が発生します。
自動化できずに人手による作業に依存してしまうと,Haas(Human as a Service)な状況になり,とてもスケールできません。こういった背景の中で,Iaas(Infrastructure as a Service)は「プログラマブルなインフラ環境である」と説明し,Rubyを用いた作業の自動化について話されました。
IaaSを提供するニフティクラウドは,今月10日に開発者向けAPIの公開を開始し,プログラムによる自動化を支援しています。現在はSOAPのAPIのみですが,今後,RESTのAPIも提供される予定です。例として,Wakameとニフティクラウドを組み合わせて,負荷の状況に合わせて自動でインスタンスを生成・削除したり,設定を変更したり,といった自動運用の話が紹介されました。
ニフティクラウドの特徴として「オンデマンド」「従量課金」「伸縮可能」「@niftyで培った高い運用実績」をあげ,最後に「国内のクラウドサービスなので,海外のサービスに比べてレイテンシが低いです。ぜひご利用ください」と,自信をみせて紹介しました。
Toshiyuki Terashitaさん「Rubyによる分散ストレージシステムの実装」
発表者のTerashitaさんはリコーに所属するエンジニアで,鳥取Ruby会(tottoruby)の主催もされているそうです。リコーではquanpというオンラインストレージサービスを運営しており,数GBのファイルをアップロードできること,PDFやPhotoshopなどのファイルやドキュメントを画像化できることが特徴と紹介がありました。
quanpの初期の頃のストレージでは,RailsアプリケーションでNASをマージしてたそうですが,設計も管理も運用もかなり大変だったそうですが,現在では単一ノードの構成になっているとのことです。とは言え,現状実質スケールアウトが不可能でスケールアップも不可能なことから,これからは30台のサーバーを導入し,近いうちに100台以上の構成にするとのことでした。それをサポートするのが,Rubyによる分散ストレージシステムの「Castoro」であることが説明されました。
Castoroを実装する前にmobileFSやkumofsについて調べたそうですが,どちらも「巨大なファイルの扱いが不便,向いていない」「NFSが使えない」などの理由により断念したそうです。なぜNFSにこだわるのかという話では,画像処理の関係で使わないといけないと話しますが,スケールアウトするには向かないため「本心としては捨てたい」とも述べていました。
Castoroには数百KBから100GBまで扱えること,HTTPとNFSの両方でアクセスできることが求められていたと話します。逆に任意文字列キーを捨て,キーは数値に限定したそうです。また,キーのユニーク性の保証についてもCastoroでは行わず,アプリケーション側で行う必要があると説明されました。
Castoroの特徴として「遅延レプリケーション」「ファイルIOはNFSとHTTP」「マルチキャストの利用」と話し,実装としてはCastoro::Client,Castoro::Gateway,Castoro::Peerの3つのコンポーネントで構成されることが示されました。
最後に,Rubyで分散ストレージシステムを実装した感想として,「プロトタイプの開発が楽だった」と話します。CastoroのVersion0.0.0(試作品)はCastoro::Client,Castoro::Gateway,Castoro:Peerの3つのコンポーネントの実装とマルチキャストの実験を含みますが,Terashitaさん一人で一日でできたことが述べられました。また,RubyはExtentionの開発がラクであるとも言及し,クリティカルな部分をC/C++で書けることで「どうにでもなるという安心感」があると述べられていました。
Castoroについてはgithub上でLGPLライセンスで公開されているとのことです。

