WebアプリケーションサーバーソフトのNode.jsには、これまでのWebアプリケーションサーバーとは全く異なる四つの特徴がある(図1)。(1)多くのアクセス要求を処理できること、(2)JavaScriptでアプリケーションを開発できること、(3)アドオンが充実していること、(4)様々な種類のサーバーとして動作すること、である。これらの特徴を順に見ていこう。

図1●Webアプリケーションサーバーソフト「Node.js」の主な特徴
[画像のクリックで拡大表示]

 一つめの特徴は、ピグライフのように1万台規模のクライアントからのアクセス要求をさばけることだ。従来のWebサーバーとは異なる「ノンブロッキングI/O(インプット/アウトプット)」と呼ばれる考え方を取り入れることで、これを実現する。

 この考え方は、スターバックスの接客方式をイメージすると分かりやすい。客はレジで注文と支払いを済ませると、配膳口近くで注文した飲み物ができるのを待つ。飲み物ができたかどうかに関係なく、レジでは次々と注文を受け付ける。配膳口では、できた順に商品を客に渡す。このため昼時に多数の来客があっても、レジ前の行列はできにくい。

 Node.jsのメカニズムもこれに近い。時間がかかっている処理の完了を待つことなく、次の処理を実行する。通信相手との同期をとらず、処理完了も待たず、一つのプロセスで次々と処理をこなす。そのため「非同期処理」とも呼ばれる。

 実はWebアプリケーションサーバーの多くは、「C10K問題」と呼ばれる難題を抱えている。アクセスするクライアント数が1万を超えると、サーバーのスレッド(並列処理の単位)数が増えすぎて、サーバーのメモリーなどのリソースが不足してしまうという問題だ。そのため、プロセッサの処理能力に余裕があっても、サーバーの台数を増やさねばならず、大規模なシステムを運用する必要が生じる。一方、非同期処理のNode.jsの場合は、このC10K問題が起きない。

この先は会員の登録が必要です。有料会員(月額プラン)は登録月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら