DeveloperSummit2012 1日目(2/16) レポート その3
【16-A-5】node.jsテクノロジースタック for ソーシャルアプリケーション Robert J. Gould 氏 / 久富木 隆一 氏
- node.js
- Mobile
- Global
言語 | 速さ |
---|---|
アセンブラ | 1.0 |
c++ | 1.21 |
java | 1.76 |
JS | 4.85 |
Ruby | 43.79 |
Python | 52.17 |
PHP | 54.8 |
Perl | 57.75 |
-
- GitHubでの人気No1
-
- >node --strict
- module node-browerify
- >require('assert')
- 非同期フロー管理(node-seq)
- Long Stack trace(long-stack-traces)
- console.errorなどをファイルにダンプ
- try/catch on async call stacks(node-gree)
- mobile
- リアルタイムクライアント == WebSockets
- WebSocket + node.js == Socket.io
- WebSocketをサポートしないプラットフォームもあるが、Socket.ioをAjaxで対応
- 但し、リアルタイムパフォーマンスが犠牲に
- WebSocketがないなら、自前で実装するしか。。
- モバイルネットワークは低速。低帯域で、高レイテンシ
- クライアントへのコンテンツダウンロードは時間がかかる
- →HTML5(WebStorage)を利用する
- Global
- node.jsの長所と短所
- Node.jsはまだ進化中
- I/Oと大量データ処理アプリケーションに強い
- シングルスレッドで、CPUを使うタスクに弱い
- CPUリソースは節約が望ましい
- できるだけ結果をキャッシュ
- 単一Node.jsサーバ作成は簡単
- スケールするには?
- クラスターモジュールを使う(cluster)
- Clusterモジュールによるプロセスをフォークできる。マルチコアへの対応
- マルチサーバの場合は、redisを利用
- スケールするには?
- Redis
- サーバ間バスでの通信をNode.jsイベント通信並に簡略化
- WebSocketとRefisのPubSubを使って融合している
- データのルールをアプリケーションレベルに集約できてミスや不整合を防ぎやすい