AP4R,Rubyで非同期メッセージング

第2回 AP4RとRailsでつくる非同期アプリケーション

この記事を読むのに必要な時間:およそ 12 分

ちょっとしたニュース

今年11月にアメリカ東海岸のシャーロットで開催されるRubyConf 2007の発表枠応募にAP4Rが通りました! いい機会をもらえたので,がんばって発表してきます。

手を動かしてみましょう

第1回では,AP4Rの開発に至った背景,システムの構成例,信頼性を保証するSAF機能について見てきました。

そして,非同期処理を利用する場合の一般的な利点と注意点に触れた後,AP4Rの「堅牢」かつ「軽量」という特徴について解説しました。

今回は,Ruby on Railsで作られたウェブアプリケーションをAP4Rと連携させて,非同期処理を実装してみましょう。作成するアプリケーションの機能と,非同期化する箇所を選び出した後,コーディングやAP4Rの設定について解説します。

アプリケーションの機能,動作

ウェブ上のお店のアプリケーションを作成します。簡単のため,お店を訪れたお客さんはウェブブラウザから品物の名前を入力して,注文をおこなうことにします。その後,サーバ側では注文情報の保存と決済の2つの処理を順次行います。処理が完了すると,ブラウザに注文完了の情報が表示されます。

仮想的な問題点,非同期化するところ

さて,お客さんの注文処理の解析を行ったところ,注文を送信してから完了が表示されるまでに長い時間がかかっていることが判りました。よりくわしく調べると,決済処理は他社のシステムと連携しており,そこで時間がかかっていました。

そこで,決済処理を非同期化し,注文の処理の後には決済のためのメッセージだけを残すように変更することにしました。この非同期化により,お客さんへより早い応答を返し,お客さんのイライラは減ることでしょう。

加えて,決済のための他社のシステムがメンテナンスや障害により止まってしまうことがあっても,このお店は注文の受け付けを継続することが出来るようになりました。つまり,2つの処理の間を疎結合化したことにより可用性が増した,ということが言えます。

プロセス構成

今回作成するアプリケーションのプロセス構成を図に示します。

図1 プロセス構成図

図1 プロセス構成図

利用するソフトウェア

アプリケーションで利用するソフトウェアをまとめておきます。なお,筆者らの開発環境は次のようになっています。また,Windows XP,Ubuntu 7.04においても動作を確認しました(個々のソフトウェアのバージョンは若干異ります)。

  • Mac OS X 10.4.10
  • Ruby 1.8.6 (2007-06-07 patchlevel 36)
  • RubyGems 0.9.4
  • MySQL 5.0.16
  • Ruby on Rails 1.2.3
  • AP4R 0.3.2
  • reliable-msg 1.1.0
  • mongrel 1.0.1

Ruby

Rubyは,オープンソースとして開発されている,オブジェクト指向の動的なプログラミング言語です。Rubyについての情報は,ウェブで検索することで多くの有用な情報を見つけることが出来ます。「オブジェクト指向スクリプト言語Ruby」のページには,ダウンロード,チュートリアル,ドキュメントへのリンクや,コミュニティの紹介など,Rubyに関する情報がまとめられています。

インストール前にRubyのプログラムに触れてみたい場合,try ruby! (in your browser)は,ウェブブラウザだけでRubyの動作を体験することが出来ます。

Rubyのインストールは,Windowsであれば,One-Click Installerの利用が簡単です。Rubyforgeのダウンロードページから,最新のインストーラーをダウンロードしてください。インストーラーを起動したら,ウィザード形式でインストールを行うことが出来ます。Windows以外の場合は,ソースから,またはパッケージからインストールすることが出来ます。Rubyインストールガイドが参考になります。

Ruby on Rails

Ruby on Railsは,Ruby言語で書かれたウェブアプリケーションフレームワークです。画面からデータベースアクセスまでをカバーしていることや,DRY(Don't Repeat Yourself.)原則を徹底的に推し進めていることなどの特徴を持ちます。WEB+DB PRESS Vol.38や,Rubyist Magazineの連載記事Rubyist Magazine - RubyOnRailsを使ってみるなどに日本語でのまとまった情報があります。

インストールは,RubyGemsを用いる方法が簡単です。詳細は,上記のどちらかを参考にインストールをしてください。コマンドをひとつ打つだけでインストールは完了です。

% gem install rails --include-dependencies
(注)
HTTPのアクセスにプロキシを経由する場合,--http-proxy=http://your.proxy.host:port/のオプションを付け加えて下さい。
Unix系のOSで,インストールにroot権限が必要な場合は,suするかsudoで実行してください。

MySQL

業務DBおよびメッセージDBとして,MySQLを利用します。MySQLのインストールは,MySQL AB社のダウンロードサイトから,お使いのプラットフォームに合わせたパッケージ,もしくはソースコードをダウンロードしてインストールしてください。

AP4R

AP4Rは,RubyGemsを用いたインストールが簡単です。

% gem install ap4r --include-dependencies

AP4Rの情報は以下の場所にあります。

また,筆者らのブログにも,随時書き込みをしています。

著者プロフィール

加藤究(かとうきわむ)

フューチャーアーキテクト株式会社,シニアコンサルタント。土木専攻だった大学時代には,道路や橋の建設について学んできたが,社会に出てからは Javaのメッセージングミドルウェアの開発/保守などに従事。昨年,Rubyで書いたメッセージングライブラリ,AP4Rでオーンソースの世界に仲間入り。現在は,AP4Rの開発/導入サポート中。

URLhttp://d.hatena.ne.jp/kiwamu/


篠原俊一(しのはらしゅんいち)

フューチャーアーキテクト株式会社,シニアコンサルタント。大学時代は物理学を専攻,素粒子論を研究,10次元の世界に住んでいた。入社後まもなく,Martin FowlerのblikiでRubyを知り,"The Ruby Way"に学ぶ。 Rubyとオープンソースが大好きなプログラマとして,AP4Rを開発中。

URLhttp://d.hatena.ne.jp/ita-wasa/

コメント

コメントの記入