Node.jsについて個人的なまとめ
Node.jsについて個人的なまとめです。こちらからの転載です。
1. Node.jsとは
- ブラウザ以外のところで動くJavaScriptフレームワーク
- JavaScriptエンジンとしてGoogleのV8を採用
- 一部のCommonJS仕様を準拠している。(ModuleとUnit Testingらしい)
- Non-blocking I/O フレームワーク
- イベントドリブン
- 基本的にシングルプロセス(クラスタ化でマルチ可能)
2. メリット
- JavaScript
- 意外とJavaScriptが使いやすいと思ってる人が多いので。一応言語を覚えるハドルは低いかな。
- CoffeeScript使用
- Python, Rubyが好きな人にはいいと思う。
- 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など。こっちが使えるフレームワークなどを色々あるし。