- サーバーサイドで動作するJavaScript
- C++実装
- ノンブロッキングIO
- イベント駆動モデル
- 単独でWebサーバーとして動作する
- 細かい処理を大量に実行することに向いている
- サーバーサイドとクライアントサイドでコードを共通化
- 学習コストが低い
- npmという膨大なライブラリを収めたアーカイブの存在
- MongoDBとの相性がよい(MEAN スタック)
- C10K問題(10000個のコネクションが、同時に1台かつ1CPUのサーバに対して張られた際のサービス破綻の問題)を解決する手法
- 非同期処理によってプログラムを順番どおりに実行せずに、できる処理から行う
- I/Oの待ちをなくすことで、たくさんの接続を速くこなすことができる
- 何も処理をしない場合でもメインスレッドが無限ループを繰り返している
- 重い処理は別のスレッドに任せることで、メインスレッドが一切I/Oでブロックされない
- PHPのようにApacheのようなWebサーバーを別に用意しなくても済む
この頃はやりのWebアプリ開発環境の構成。
M - MongoDB
E - Express
A - AngularJS
N - Node.js
従来難しかった、1つのスレッドに複数のコネクション処理を多重化する、シングルスレッドかつノンブロッキングなイベント駆動I/Oの容易なプログラミングが可能になる。従って、1コネクションに対し1スレッドを割り当てることを前提とした、従来型のHTTPサーバソフトウェアと比較して、処理効率を容易かつ飛躍的に高くできる。 クライアントサイドからサーバサイドのデータベースまで、やり取りするデータがJSON形式に一本化でき、データ形式の変換が無くなる。
- JSON形式のデータをそのまま格納できるため、SQLデータベースと比較して、入出力時におけるデータ形式の変換がなく、オーバーヘッドも少ない
- サーバサイドMVCフレームワーク
- クライアントサイドMVWフレームワーク
- Model-View-Whatever(MVW)モデルとしており、MVC,MVVM等の様々なモデルを利用可能
以前までのデファクトスタンダード。
OS:Linux
Webサーバー:Apache HTTP Server
データベース:MySQL
プログラミング言語:PHP/Perl/Python