ngServer node.jsで開発されたプラットフォーム
why we decided to use node.js
多くの接続に対して対処出来る
(同時接続数の増加)
リアルタイムの要求の増加に伴い、
同時接続数も増えてきている。
十分なパフォーマンスを発揮出来る
メモリ消費量も多くない(スレッドで比較ずみ)
どれだけ早いのか?
(問題ないレベルだがメチャクチャ早いというわけでもない)
問題点はないのか
- async programming
- prototype
習うより慣れるしかない
プログラミング構造そのものより、
プログラマの慣れの問題
CPU bound taskには向かない
- イベントが途中で止まってしまう
- シングルスレッドでやってしまう(他のタスクが貯まりがち)
何をやりとりしているのか?
Feature Phone(ガラケー)
ケータイから
request etc...
Phone → Server
サーバーから
swf files
rendered HTML files
Phone ← Server
SmartPhone
JSON
Phone ⇔ Server
以下2つの機能を電話に投げる(サーバーの資源を有効活用するため)
static assets
rendering
サーバーをAPIサーバーとして使う
Node.jsを利点を活かしたまま使える
production
ソーシャルゲーム
開発において難しい点
Node.jsのバージョンが早すぎる
モジュールのアップデートについていけない
CPU Spikes
負荷を一定のタイミングでかけるとスパイクがかかってしまう
原因
コード?
node.jsそのもの?
ミドルウェア?
nodeそのものに原因がある
V8 GC with bigger heap
大きなヒープメモリが確保されたときに問題が起こる
node.jsのリリースバージョンを使うのがいいことなのか
カスタマイズするのがいいのか
Server-side Framework
Architechture
ミドルウェア MySQL や memcacheなど
Auth HeaderをつけたJSON
Phone → Server
JSON
Server → Phone
ngServer command(Railsに似ている)
MVCモデルを採用
MobageAPIが使える
hot-reload (プログラムに変更があるとすぐに反映される)
構造
HAProxy(LB) ngServer (Cache+Storage+queue)
Hosting Service(全て自前でやるわけではないので)を検討中
国際的な開発
東京とサンフランシスコで環境がちがう
英語で、時差(17時間)を考慮したやりとりを行う
文化は?(アメリカ人はすごくポジティブ)
TK
problems, bugs, horrible
doesn't work
SF
awesome great
LGTM
my suggestion is.....
Make everyone delight.
英語や文化を乗り越えて開発を進めよう