Node.jsはシングルスレッド、ノンブロッキングI/O、イベントループなどの特徴があり、向いていることと向いていないことがあると思います。
下記、Googleで検索して調べてみたのですが、他にも「向いていること」、「向いていないこと」の例がありましたら、教えてください。もし実際にNode.jsを使っていいたら、どのような処理にNode.jsを使っているか教えていただけたらありがたいです。
また、下記の理解が間違っていたらご指摘下さい。
##Node.jsに向いていること
処理が非常に短時間でイベント処理が重要なアプリ
例えば、チャットアプリなどの大量のアクセスのあるリアルタイムなネットワークプログラミングが得意
シングルCPUのサーバー
シングルCPUの環境化でもその性能を十分使い切れるため、比較的性能の小さいサーバ上で大きなパフォーマンスを発揮できる
##Node.jsに向いていないこと
CPU負荷の高い処理
CPUリソースを大量に必要とするJavaScriptの処理を行うとイベントループが回らない状態になり、イベントハンドリングが行えない状態に陥る。このため、CPU処理が大量に必要とされるアプリではにNode.jsの利用は向かない
マルチコアサーバー
Node.jsは基本的にシングルプロセス・シングルスレッドで動作する。しかし、そのままの利用では、最近の高集積化したマルチコアサーバ上ではハードウェアの性能を十分使い切ることはできない。node-v0.6からはクラスターモジュールが導入され、Node.jsがマルチプロセスで動作するようになったが、マルチプロセスを意識してプログラミングの設計をする必要がある。
画像など静的コンテンツの処理 (Nginxなどで対応)
大量の静的コンテンツを提供するサーバなどでは、そもそも多数のイベント処理がそれほど必要なく、Node.jsを使うメリットがほとんどない
##追記: 構築事例
アメーバ、PayPalなどで構築事例があるみたいです
・[大図解]ピグライフはこう動いている
・Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム
・MongoDB + node.js で作るソーシャルゲーム
・第64回、第65回 NHK紅白歌合戦:生放送と連動したミッションクリティカルなメッセージ配信プラットフォーム
・PayPal社がバックエンドをJavaからJavaScriptへ移行
上記PayPalの記事でもあるように、1つのJavaScriptチームでフロントエンドからバックエンドまで記述できるということは大きなメリットがありそうです。
Harrell氏によると、JavaScriptをブラウザ側からサーバ側まで使用する利点の1つとして、『あらゆるレベルの技術において、理解し、ユーザのニーズに対応することができる』1つのチームが受け持つことにより、フロントとバックエンド開発間の隔たりをなくすことが挙げられる
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/12/08 12:41
2015/12/15 05:24