原本はこちら
1. Node.js
- ブラウザ以外のところで動くJavaScriptフレームワーク
- JavaScriptエンジンとしてGoogleのV8を採用
- 一部のCommonJS仕様を準拠している。(ModuleとUnit Testingらしい)
- Nonblocking I/O フレームワーク
- イベントドリブン
- 基本的にシングルプロセス(クラスタ化でマルチ可能)
2. メリット
- JavaScript
・意外とJavaScriptが使いやすいと思ってる人が多いので。一応言語を覚えるハドルは低いかな。
- CoffeeScript使用
・こっちかな。
- JSON
・当たり前だけどJSONは結局JavaScriptなのでJavaScriptよりJSONに得意な言語はないと思う。
- V8エンジン性能が良くて改善も早い。
- 性能がいい。
・どこで見たか覚えてないが、基本的にNode.jsがJavaよりは遅いが、PHP(Python, Ruby)より3〜10倍性能がいい。
- npm
・Node Package Manager
- C/C++ Addon
- NoSQLと相性がいい。
3. デメリット
- まだ商用で使うには不安定な部分がある。
- 開発者が少ない。
・JavaScript開発者がNode.jsの開発者ではない。
- メジャーでもない。
- 非同期処理なのでエラーハンドリングが難しい。
- 基本的にシングルプロセスなのでどこかでシステムエラーが発生するとサーバダウン。
- Hot deployができない。
4. Node.jsに合うユースケース
- 同時リクエストが多い軽量処理。リアルタイムサーバ
・Gameサーバの一部
・チャットサーバ
- RESTful + JSON
・RESTfulなAPI用のサーバならいいと思う。
・JSONならJavaScriptほど得意な言語はないと思う。
- ページが少なくてAjaxでほとんどの処理をするパターン
5. Node.jsに合わないユースケース
- I/OよりCPUを使う処理が多いパターン。
・動画エンコーディング
- 静的コンテンツ用サーバ
・画像、動画や静的なHTMLページなどのサーバ。
・Node.jsよる用途にあうサーバが色々ある。
- 単純なHTMLレンダリングとCRUD用サーバ
・既存のいいものがいっぱいあるはず。
・PHP, Python, Rubyなど。こっちが使えるフレームワークなどを色々あるし。
- メモリリークがあるらしい。バグ?