自己紹介
松田尚也(24)
(一応)二年目エンジニア
最近やったこと・やっていること
- 金融系のREST APIの開発
- スマホアプリ設計 / 開発
得意・好き
-
JavaScript
-
Node.js
-
CI/CD (Azure)
-
OAuth2.0/(Open ID Connect)
-
♡ビール♡
(最近サッポロビールからアサヒ派になりました)
What is Node.js?
What is Node.js
- だいたい ServerSide JavaScript 実行環境
- だいたい イベントループ
- だいたい ノンブロッキング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万クライアントを超えると処理が遅くなる
イベントループ
- 一つのスレッドでイベント
- イベントキューには
Node.jsより更に下のOS等がやってくれる処理を登録
イベントループは常にイベントキューに処理がないか監視し、ある場合は実行する
あれ。。。
遅いんじゃない???
ノンブロッキングI/O と 非同期処理
ノンブロッキングI/O と 非同期処理
同期的なイベントループ方式だと、、、
I/Oが発生するたびに処理がブロック(何もできない状態)されてしまう。
ノンブロッキングI/O と 非同期処理
- I/Oが発生する処理を行うと直ちに処理が返ってくる
- でも実際には、イベントキューの中で実行待ち状態
- 実際の処理が終わると、予め処理が終了した際に行う
call back
処理が呼び出される
What is Node.js
- ServerSide JavaScript 実行環境
- イベントループでシングルプロセス
- ノンブロッキングI/O で 非同期処理