日本Node.jsユーザーグループ代表
最近こんなこと言われる
日本でのNode.jsはオワコン
TJとExpressの作者がGolangに逃げた
Node.jsって結局なんなのか
2009 Node.js is born Ryan Dahl Joyent
さかのぼって2001
C10K問題
- 「Web2.0の先にあるC10K問題の話」みたいな記事がバズる
- ちょーたくさんのクライアントが一度に接続したらサーバ死ぬよね問題
- 当事のフロントはApache
- クライアントが接続するたびにプロセスとかスレッドがあがるとメモリが使われて…
1台で10Kもさばかねーしwwwwwwwwwww→ところが、xhr-long pollingが流行った(2006)
Nginx
シングルスレッドなのでコネクションがあたくさんあってもworkerは起動しないので、リソースは効率的 (Apacheはworkerがいっぱい出来る)
C10K問題が出てきてからイベントループモデルが流行り出す
EventMachine Twisted AnyEventなど
時間かかかる処理(ファイルIOとかネットワーク系)はできる限り非同期にすべきという考え方がイベントループモデル
Ryan Dahl
イベントループモデルは良いが、既存のIO同期系の処理はなくしたい
非同期ライブラリとしてlibevが採用され、後にlibuvになる
V8 is born in 2008
これまでのJS → 構文解析 → 実行 故に、遅い
V8→動的にマシン語に変換
- C10Kを解決するイベントループモデル
- 高速な非同期I/O
- 強制可能な言語
- 超絶早い処理系
2010-2012 socket.io expressあたりが騒がれて普及へ
Node.jsとはなんなのか
- 非同期ライブラリとイベントループモデルで動く高速かつ省リソースなJS実行環境
- socket.ioなど、コネクションを貼りっぱなしにするものと親和性が他界
- Node.jsだけで無理はしないことが重要
分散環境で複数サーバと協調する仕組みにNodeは向かなかった。だけで、TJとしてはWebアプリを作るなら相変わらずNode.jsを使い続けるぜ、っていう壮大な釣り
適用されるは範囲によっては不利なだけ。。。
11/15 東京Node学園祭2014