目的
- Slackでアプリを作成したときにNode.jsというものに触れたが不明なことが多かったため調べたことをまとめる。
特徴
- サーバで動くJavaScript
- 小さい計算が得意で速い
- マイクロソフトやYahooが推奨している
- リアルタイムWebの分野に強い
- 小規模で機動性の高いWebアプリで、リアルタイム性が求められるアプリに最適
ちょっと深堀した特徴
-
非同期処理で動く(動作が高速な理由)
データベースからデータを取得するプログラムで同期処理の場合はデータベースからの反応を待つが、非同期処理だとデータベースからの反応を待っている間に別の処理を実行することができる。前述の方法をとっているため大量のアクセスを高速に処理することが可能。 -
シングルスレットでメモリの消費効率化(小さい計算が得意な理由)
本来サーバに複数のアクセスがあった時にそれぞれにメモリを割り当てて実行する(マルチスレッド)が、1万人規模のアクセスがあるとメモリが上限にあたり効率が悪くなる。Node.jsでは一つのメモリでひとつずつアクセスを処理する方法をとることでメモリ効率を向上させている。
一見一つのメモリで一つの処理しかできないため処理が遅そうに感じるが前述した非同期処理のおかげで、メモリでの処理を待たずして処理を実行できるため、少ないメモリ消費量を抑えて大量のアクセスを高速に処理できる。