ZEALOTエンジニアブログ

Node.jsについて個人的なまとめ

Pocket

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など。こっちが使えるフレームワークなどを色々あるし。
Pocket