www.pogoapp.com using "nginx + lua + redis"

pogoappという新手のPaaSさんで WebアプリへのHTTPリクエスト振り分けに nginx + lua + redis を使ってる、という記述をみつけました

http://www.pogoapp.com/

Incoming HTTP requests are handled by a pair of dynamic web proxy servers, backed by nginx+lua+redis, which dynamically route the traffic to your app's backend web processes.

As you boot up more web processes, our dynamic proxy will seamlessly begin routing requests to the newly available backends. Scale your site up and down in seconds.

Webアプリのプロセスを増やすことで、横に負荷分散していく構成をとれるようです。 nginx + lua + redis の組み合わせでバックエンドの複数プロセスに HTTPリクエストを振り分けている、と。

便乗してSqaleの宣伝

ペパボの Sqale でも コンテナ と呼ばれる単位のアプリケーションプロセスを追加することで 任意のタイミングで スケールアウトできるオプションを用意しています。

バックエンドのコンテナが増えると HTTPのルーティングを頑張らないといけないのですが、そこで nginx + lua + redis がバリバリと活躍します。細かい差異はあれど pogoappでも書いてるコードはほぼ同様だろうナー と推測しています


Sqaleでの nginx + lua + redis の利用法については mizzyさんが札幌Ruby会議で発表されたスライドの中で触れられています。(上記画像もここから借用しています)

スライド: Inside Sqale’s Backend Sapporo Ruby Kaigi 2012 Gosuke Miyashita paperboy&co. Inc.

misc

HTTPのルーティングを動的にやる仕組みは、 英語だと dynamic web proxy servers やら dyanmix proxy とか呼んどいたらいいようですね。