いくつかのRailsアプリをHTTPのAPI経由で連携するアプリなんかを構築していたりするのですが、「それ、なんてSOA?」とPropono: Pub/Sub for Rubyを読んで気づきました。
Propono
ProponoはAWSのSQSとSNSを利用してRailsアプリ間のメッセージングを実現するGem。さっきのリンクの記事で紹介されている記事では、月間数十万件のメッセージングを$5以下でさばけているというのだから、AWSを利用するコストメリットの凄さが分かります。
いわゆるSOAミドルウェアと同じように、SQSのコンソールからキューの状況とかも覗くこともできますし、破損したキューや遅いキューの把握、アプリが落ちた際のメッセージの再送なんかもできてしまう訳で、これを使えばライトにSOAが実現できるわけですねー。いやー、前職でSOAのミドルウェアをいろいろいじっていた身としては、凄いなーと思うわー。。
SOAにするメリットはアプリを分割することによってデプロイコストを下げる&コードの複雑性を軽減できるところ。メッセージングのパフォーマンスを上げるために基本的に非同期な設計にしなくてはいけないところが難しいところですが、上手くハマれば劇的にアプリが作りやすくなる。BPMLなんかに対応している訳ではないのでSOAミドルウェアの代替にはならないだろうけど、大きめのRailsアプリケーションを設計する一つの事例として把握しておくと、良いのかも知れないです。