Node.jsとはサーバサイドJavaScriptの一種
サーバサイドJavaScriptとはサーバサイドのアプリケーションの実装言語として、JavaScriptを使用する言語および環境のこと
ブラウザ(クライアント)サイドと同じ開発言語で、サーバサイドの開発が出来るので、開発効率が上がるといわれている。
サーバサイドJavaScriptにはこれらがある。
- Node.js
googleが開発したエンジン、V8で実行する環境 - Rhino
JavaVM上で実行するJavaScript言語処理系 - Aptana Jaxer
Aptana社がオープンソースとして配布している。
でもそれだけならそんなに自分は興味を持ちませんでした。
node.jsの何がすごいと感じたかというと
- WebSocketが簡単そう。
- サーバーの負荷分散に期待あり。
です。
WebSocketが簡単そうは「node.jsでTwitteのタイムライン取得」でも書きましたが
ほんとに簡単に実装が出来ました。
npmというパッケージマネージャーでフレームワークなどのライブラリを取り込めるのでいろいろ可能性があります。
負荷分散はC10k 問題で「apache vs nginx」=「スレッド対イベントループ」を取り上げています。
Apacheはスレッド、nginx はイベントループで、スレッドモデルは実行スタックをコピーするので
スレッド(アクセス)が増えるほどメモリ使用率が上昇するが、イベントループはプロセスは1個なので
メモリ使用量はあまり上がらないので、大量のアクセスに関してはイベントループが有利ということ。
そして、Node.jsは後者のイベントループ
これによって、特定の重い処理を待つことなく、次の入力を受け取れるので
トランザクションを重視するより、短縮URLのようなIOを優先されるような場合で活用できそう。