AP4R : Ruby のための非同期メッセージングライブラリ (篠原 俊一 / 加藤 究)

スピーカー
篠原 俊一 / 加藤 究 - フューチャーアーキテクト株式会社
プロフィール
篠原 - Ruby が大好きなプログラマ。九州出身、芋焼酎が好き。でも、日本酒には板わさが最高だと思う。(id:ita-wasa)
加藤 - 去年から Ruby をはじめたプログラマ。楽しくなってきた。名前重要。名前負けしないようにがんばる。(id:kiwamu)
講演者による資料
http://rubyforge.org/docman/view.php/1765/1256/AP4R_on_RubyKaigi2007.pdf
http://rubyforge.org/docman/view.php/1765/1257/AP4R_on_RubyKaigi2007_EN.pdf (英語版)
rubykaigi_biz4.jpg

自己紹介

加藤究
  • 昔は土木専攻
  • Rubyは去年から
篠原俊一
  • C,Haskel
  • Rubyは去年から

Introduction

  • 軽量メッセージングライブラリ
  • Asynchronous Processing for Ruby
  • ユーザーへのすばやい応答
  • 負荷分散
  • 去年9月リリース(プレスリリース)

軽量かつ堅牢

  • ユーザーにすばやく応答したい
  • 即時応答不要な処理はあとで

メッセージングによってあとで処理

  • Logging
  • Sending mail
  • 重い処理

問題点

  • メッセージが確実に配送されないと、メッセージの消失、重複などの問題
  • 確実な配送保証は重要

堅牢さ

RtFA

  • Pure Java
  • 佐川急便の基幹システムのオープン化にも使用
    • アプリサーバー100台!!

メッセージング重要

From RtFA to AP4R

  • RtFA開発から8年たってる
  • 変更追加機能に対して柔軟に!
  • そんなときにRubyと出会う
  • Rubyを使うと軽量なメッセージングが可能かも

デモ

  • 買い物アプリ
  • 注文と決済処理
  • 決済処理が重いのでAP4Rを使って遅延処理
  • mongrel clusterを利用
  • abでストレス

リクエストをabで投げると処理中のメッセージの数が増えます。 しかし、クライアントにはレスポンスが即時に返ってきて、待たされることがありませんでした。

閑話休題

Java、FireFoxにはマスコットが

ワイルドかつキュート

AP4R ⇒ APAR ⇒ アルマジロ

まじろう

rubykaigi_biz4_3.jpg

Working With Rails

  • Rails関係の開発者/会社の情報
  • 104カ国
  • ブログへの投稿を集約

フィード取得の拡張性に問題。遅い、古い

WWR solution

  • フィードキュー
  • 非同期で取得

AP4Rで

  • スケール出来る
  • フィードの種類に柔軟に対応

社内プロジェクト

  • 新しく作るアプリケーションはRuby on Railsで
  • これまでの資産はJava

要求

  • 速くてリッチなUI
  • Java⇔Ruby間のデータ複製

そこでAP4R

  • UIから重い処理を分離
  • 非同期でRuby⇒Java

遅延可能な処理を非同期化

  • サマリデータの作成
  • メール送信など

ここでIRCからつっこみで場内爆笑。図中の「まじろう」の絵に対して、色くらい塗れよw

非同期にJavaを呼び出す

  • 更新データを非同期で反映

IRCではもっぱら「まじろう」の話題で戸惑う講演者

まとめ

  • ユーザーへの応答には不要な処理
  • 別のトランザクションでよい
  • 外部システムの呼び出し

これらを非同期に

技術的な話

メッセージPUT APIと処理の流れ

ap4e.async_to(....)

詳しくはRDOCを

http://ap4r.rubyforge.org/doc/

処理の流れを図解するも複数並べられた「まじろう」に対して「量産型まじろう」などIRCでさらに盛り上がる。すばらしいマスコット効果

rubykaigi_biz4_2.jpg

AP4RがHTTPにPOST

保存してから送信

業務データベースの更新とメッセージングをアトミックに行いたい

Store and Forward

SAF便利

まとめ

  • シンプルAPI
  • 非同期処理を自動で処理
  • SAF機能で確実な配送

質疑応答の時間は質疑なし、IRCで盛り上がる会場

11:58 (ujihisa) まじろう良かった
11:58 (_tommy_) まじろうがかわいく見えてきた
11:58 (ymitsui) Future Plan: まじろうを塗る
11:58 (miyamuko) まじろうメソッド
11:58 (kssddy) SAFにマスコットはいないんですか?
11:58 (CyrossM__) まじろうに始まりまじろうに終わる
11:58 (unak) マスコット駆動開発
11:58 *po0ls quit ("Quitting!")
11:58 (CyrossM__) MDD
11:58 (ujihisa) MDD
11:58 (nov) MDD
11:58 (cuzic) MDD
11:58 (znz_r) 今度はメッセージも持たせておいて。
11:58 (akr) 質問: まじろうの嫌いなものはなんですか
11:59 (walf443) 「ふつう
11:59 (unak) 好きなものを聞けよ
11:59 (walf443) 』の質問
11:59 (ujihisa) 質問: まじろうを描いた方は?
11:59 (_tommy_) なんでも食べそう
11:59 (ujihisa) らくたさん
11:59 (kssddy) らったさん
11:59 (kssddy) Ratta
11:59 (ntakai) バックエンドがRailsの理由は?

(ロガー:よう)

Last modified:2007/06/16 16:00:01
Keyword(s):
References:[RubyKaigi2007速報ログ]

Login