Help us understand the problem. What is going on with this article?

Node.jsの「構築事例」、そして「向いていること」と「向いてないこと」

More than 3 years have passed since last update.

Node.jsはシングルスレッド、ノンブロッキングI/O、イベントループなどの特徴があり、「向いていること」と「向いていないこと」があると思います。

言語選定の際に使えるメモとして、Node.jsの構築事例も加えてまとめてみました。

Node.jsに「向いていること」

処理が短時間でイベント処理が重要なアプリ

例えば、チャットアプリなどの大量のアクセスのあるリアルタイムなネットワークプログラミングが得意

シングルCPUのサーバー

シングルCPUの環境化でもその性能を十分使い切れるため、比較的性能の小さいサーバ上で大きなパフォーマンスを発揮できる

Node.jsに「向いていないこと」

CPU負荷の高い処理

CPUリソースを大量に必要とするJavaScriptの処理を行うとイベントループが回らない状態になり、イベントハンドリングが行えない状態に陥る。このため、CPU処理が大量に必要とされるアプリではNode.jsの利用は向かない。

マルチコアサーバー

Node.jsは基本的にシングルプロセス・シングルスレッドで動作する。しかし、そのままの利用では、最近の高集積化したマルチコアサーバ上ではハードウェアの性能を十分使い切ることはできない。node-v0.6からはクラスターモジュールが導入され、Node.jsがマルチプロセスで動作するようになったが、マルチプロセスを意識してプログラミングの設計をする必要がある。

画像など静的コンテンツの処理

大量の静的コンテンツを提供するサーバなどでは、そもそも多数のイベント処理がそれほど必要なく、Node.jsを使うメリットがほとんどない。静的コンテンツの方はNginXなどで対応するらしい。

Node.jsの「構築事例」

ピグライフ、PayPalなどで構築事例があるみたいです。

[大図解]ピグライフはこう動いている
Node.js Cluster+Socket.IO+Redisによるリアルタイム通知システム
MongoDB + node.js で作るソーシャルゲーム
第64回、第65回 NHK紅白歌合戦:生放送と連動したミッションクリティカルなメッセージ配信プラットフォーム
PayPal社がバックエンドをJavaからJavaScriptへ移行
ソーシャルアプリのインフラはNode.jsが主役になるか
【NASA】みんなが知っている超有名な企業でもNode.js使っているよ!活用事例とソリューション #nodefestA #nodefest
node.jsでリアルタイムWEBアプリケーションの開発
How Node.js Powers the Many User Interfaces of Netflix

上記PayPalの記事でもあるように、1つのJavaScriptチームでフロントエンドからバックエンドまで記述できるということは大きなメリットがありそうです。

Harrell氏によると、JavaScriptをブラウザ側からサーバ側まで使用する利点の1つとして、『あらゆるレベルの技術において、理解し、ユーザのニーズに対応することができる』1つのチームが受け持つことにより、フロントとバックエンド開発間の隔たりをなくすことが挙げられる

また、他にもこのような意見があるそうです。

Node.jsは日々安定度を増しており、採用事例も増え、より大型なプロジェクトでの利用も増えてきている。例えば最新のコミュニケーション・ツールであるSpeekやVoxerは完全にNode.js上に構築されている。他の採用者にも、Walmart、Microsoft、Yahooなど、誰もが知る企業が顔を揃えている。

「もし私が動的な開発環境を一つだけ選ばなければいけないとしたら、おそらく迷わずNode.jsを選ぶだろう。」

「Node.jsの良さは小型プロジェクトの開発が本当に簡単に行えるところだ。他の環境なら長時間かかるアイディア・ベースでのプロトタイプなども、Node.jsならばすぐにできてしまう。」
急成長を遂げるNode.jsがどのように発展したのかをその立役者に聞く

他にも構築事例や、向いていること、向いてないこと、上記記事の誤りがあれば教えて下さい。

twipg
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away