ちょっとしたニュース
今年11月にアメリカ東海岸のシャーロットで開催されるRubyConf 2007の発表枠応募にAP4Rが通りました! いい機会をもらえたので,がんばって発表してきます。
- Agenda for RubyConf 2007 :
Introduction to AP4R, Asynchronous Processing for Ruby
手を動かしてみましょう
第1回では,AP4Rの開発に至った背景,システムの構成例,信頼性を保証するSAF機能について見てきました。
そして,非同期処理を利用する場合の一般的な利点と注意点に触れた後,AP4Rの「堅牢」かつ「軽量」という特徴について解説しました。
今回は,Ruby on Railsで作られたウェブアプリケーションをAP4Rと連携させて,非同期処理を実装してみましょう。作成するアプリケーションの機能と,非同期化する箇所を選び出した後,コーディングやAP4Rの設定について解説します。
アプリケーションの機能,動作
ウェブ上のお店のアプリケーションを作成します。簡単のため,お店を訪れたお客さんはウェブブラウザから品物の名前を入力して,注文をおこなうことにします。その後,サーバ側では注文情報の保存と決済の2つの処理を順次行います。処理が完了すると,ブラウザに注文完了の情報が表示されます。
仮想的な問題点,非同期化するところ
さて,お客さんの注文処理の解析を行ったところ,注文を送信してから完了が表示されるまでに長い時間がかかっていることが判りました。よりくわしく調べると,決済処理は他社のシステムと連携しており,そこで時間がかかっていました。
そこで,決済処理を非同期化し,注文の処理の後には決済のためのメッセージだけを残すように変更することにしました。この非同期化により,お客さんへより早い応答を返し,お客さんのイライラは減ることでしょう。
加えて,決済のための他社のシステムがメンテナンスや障害により止まってしまうことがあっても,このお店は注文の受け付けを継続することが出来るようになりました。つまり,2つの処理の間を疎結合化したことにより可用性が増した,ということが言えます。
プロセス構成
今回作成するアプリケーションのプロセス構成を図に示します。
利用するソフトウェア
アプリケーションで利用するソフトウェアをまとめておきます。なお,筆者らの開発環境は次のようになっています。また,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の情報は以下の場所にあります。
また,筆者らのブログにも,随時書き込みをしています。
- kiwamu日記(加藤)
- いたわさににほんしゅ(篠原)

