node.jsつかいました

 こん**は、taiyohです。
 さて、先日のsugyanのエントリ「node.jsはじめました」にて

本日2/25(金) 20:00から行われる、弊社のオンライン説明会もリアルタイム技術を駆使しています! 新卒採用企画 オンライン会社説明会 2012 | 面白法人カヤック ぜひ見に来てみて下さい!

 とありましたが、この説明会で僕はnode.jsを使ったリアルタイムシステムを担当し、説明会の盛り上げに携わっていました。
【何がリアルタイムか】
 このイベントでは、講演をustreamにて配信しました。この時、閲覧者はこちらが用意したいくつかのアクションを実行することができます。この情報は自前のストリーミングサーバを経由し、同じようにページを閲覧している別の閲覧者のflashで表示されます。弊社デザイナの(@barimi)の登場時、スゴイ数のアクションが送信され、かなりわいわいやっていた様子が伺えました。裏側にいた僕は、落ちないかちょっとヒヤヒヤしていましたが(笑)
 また他にも、話者のリアルタイムの反映にも同じシステムを利用していました。

 ここまでの顛末を、先ほど社内の勉強会で発表しました。以下がその資料となります。
 (割とドキュメンタリータッチです)

 ちょっと見づらいですね、すいません><
 資料には書いてない裏話なのですが、http.request()によるスレーブからマスタへの接続について、ちょっとハマったポイントがあります。第1引数のoptionsのホスト名やポート番号の指定を変えても、2回目以降のリクエスト先が変わらないという問題がありました(v0.4.1)。なので、全スレーブから一つのマスタを参照してしまい、なかなかパフォーマンスが上がらないという状態が続きました(本番数時間前)。その動作が仕様かどうかを判断している時間がなかったので、net.Socket()で書き換え、事無きをえました。
 また、発表資料のnode.jsで使っているルーティングライブラリは「node-router」というものです。他のsinatraライクなルーティング設定をできるライブラリではexpressが有名ですが、自分がまだ使ったことがなかったことと、高機能ゆえのパフォーマンス低下を気にしたため、使用経験のあるnode-routerを採用したという次第です。チキンですいません><
 また、無停止でのリソース追加方法について、弊社@fujiwaraより「LVSを使ってみたら」と指摘いただきました。ありがとうございます。

node.jsを仕事で使いたい!

 弊社でもすでに何本か、node.jsを使用した案件があります。リアルタイム技術はほぼ間違いなく、今後数年のWEB業界のトレンドになると思います。
 是非、カヤックでそうした技術を使った面白いことをやってみたいという方は、
 こちらよりお問い合わせください!