by shigemk2

当面は技術的なことしか書かない

ngCore Server, ngGoBuilder とサンフランシスコ-東京共同開発の実際 ngServerについて

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.

英語や文化を乗り越えて開発を進めよう