LoginSignup
33
29

More than 3 years have passed since last update.

【LT資料】Node.jsとは?

Last updated at Posted at 2019-08-30
1 / 16

自己紹介

松田尚也(24)
(一応)二年目エンジニア

最近やったこと・やっていること

  • 金融系のREST APIの開発
  • スマホアプリ設計 / 開発

得意・好き

  • JavaScript
  • Node.js
  • CI/CD (Azure)
  • OAuth2.0/(Open ID Connect)

  • ♡ビール♡
    (最近サッポロビールからアサヒ派になりました)


What is Node.js?


What is Node.js

  1. だいたい ServerSide JavaScript 実行環境
  2. だいたい イベントループ
  3. だいたい ノンブロッキングI/O と 非同期処理

だいたい ServerSide JavaScript 実行環境


ServerSide JavaScript 実行環境

  • 従来ブラウザで動いていたJavaScriptをServerでも動かせるようにした
    WebServer + JavaScript の実行環境がセットになった感じ

  • nodeコマンドを使用できる
    サーバーサイドというよりは、実行環境の提供
    node hoge.js
    これだけで対象ファイルのJavaScriptコードが実行される

  • npm(Node Package Manager)
    非常にかんたんにライブラリ管理を行える


だいたいイベントループ


イベントループ と 背景

Node.jsの開発が開始された2009年

C(クライアント)10K(1万台)問題

クライアントの同時接続数が1万件を超えると、CPU等のリソースは余裕があるにも関わらず、
同時接続のオーバーヘッドにより、速度が遅くなってしまう問題のこと


同時実行(並行処理)の限界

Web及びフロントの発展

Serverに対するリクエスト数が増える

1リクエストに対して1スレッドの処理方式だと、メモリの消費が激しい

結果
1万クライアントを超えると処理が遅くなる


イベントループ

そこで生まれたのがイベントループ
eventLoop.png

  • 一つのスレッドでイベント
  • イベントキューには Node.jsより更に下のOS等がやってくれる処理を登録
    イベントループは常にイベントキューに処理がないか監視し、ある場合は実行する

あれ。。。
遅いんじゃない???


ノンブロッキングI/O と 非同期処理


ノンブロッキングI/O と 非同期処理

同期的なイベントループ方式だと、、、
I/Oが発生するたびに処理がブロック(何もできない状態)されてしまう。


ノンブロッキングI/O と 非同期処理

そこで、ノンブロッキングI/Oな非同期
nonblocking.png

  • I/Oが発生する処理を行うと直ちに処理が返ってくる
  • でも実際には、イベントキューの中で実行待ち状態
  • 実際の処理が終わると、予め処理が終了した際に行うcall back処理が呼び出される

What is Node.js

  1. ServerSide JavaScript 実行環境
  2. イベントループでシングルプロセス
  3. ノンブロッキングI/O で 非同期処理

33
29
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
33
29