zed shawのmongrel2は言語ニュートラルなサーバ

Mongrel2は各種の外部リクエストをZeroMQに変換することにより、均一なインターフェースを提供し言語ニュートラルな分散型のシステム構築を可能にしてる。

http://sheddingbikes.com/posts/1276761301.html

「まだ君は気がついていないかもしれないけど、このデザインはウェブアプリケーションアーキテクチャーと稼働形態を変えるものにる可能性がある」

"It may not dawn on you quite yet, but I think this design has a verygood chance of changing how we architect and deploy web applications."

大口を叩くので有名なZedがまた何か叫んでいる。聞いてみようではないか。

全ての言語を愛するサーバ

mongrel(バージョン1)はRubyの全てのフレームワークを平等に愛するサーバとして作った。
今度は全ての言語を平等に愛するサーバを作りたかった。だからCで実装されている。

一つのポートで色々なプロトコルを喋る!

HTTPもFlash SocketsもJSSCocketも全て一つのポートでこなすサーバだ。mongrel2.org:6767にブラウザを向けるとHTTPが帰ってくる。telnetするとJSSocketになる。「Mongrel HTTP parser」に各プロトコルをハンドリングするルールを追加して可能にした。 WebSocketsも時期がきたら対応できる。

各リクエストはTCP/IPやZeroMQ経由でバックエンドに行く。HTTPリクエストはnginxでプロクシ(keep-alive装備)する。JSSocket JSONpythonのサーバにroutingされる。

Mongrel2の機能はリクエストをバックエンドサーバに送りソケットを管理する以外にない。

「この事実を暫く熟考してください」

HTTPリクエストが0mqに変換されることによって、色々な応答スタイル(PUB/SUB, REQ/REP, multicast)や言語で処理できる。ニーズに合せて言語を混ぜて使うことだった可能だ。

ウェブリクエストの同期・非同期やバックエンドサーバの言語、数、ロケーションにかかわらず、自由にシステムが構築できる。

nosqlのクラスターをアプリケーションロジックにあてはめたようなものだ。(アプリケーションサーバを簡単にクラスタリングできるという意味だと思う)今迄に無いようなアプリケーションが作れるようになる。(その例は意味不明。Zedちょっと落着きなさい、、)

ステータス

  • クラッシュするがchatサーバがあるとのこと。
  • 関心のある開発者はfossilを使ってビルドしてみ
  • Mongrel2はchatとか得意なんで、chatのようなシステムを作っている人は連絡して

とのこと

ネットの各種プロトコルをメッセージqueueに変換するってのは良いアイデアだね。もしこのプロジェクトが成功したらアプリケーション・アーキテクチャーを変えるものっていうのも大袈裟な主張ではなさそうだ。

Zedは一頃,finite state machineに凝っていた。mogrelのパーサはFSMのデザインに基づいて作られているからセキュリティー系のバグが無い、とか言っていた。mongrel2で複数のプロトコルに同一ポートで対応できるのはFSMベースのデザインの御陰だろう。ハードコードしたロジックでは難しそう。zedのfsmパーサ、そのうち勉強させてもらいたい。