Voxer「spdy始めました。ios/osx用ライブラリiSPDY出しました」
Voxer Engineeringブログ 2014.1.3のエントリ
iSPDY Released | Voxer Engineering
- トランシーバーに通話・動画・メッセージングが合体したようなアプリをweb/ネイティブ向けに出してるvoxerの近況
- ceoが米軍特殊部隊上がりとか、ctoがハワイ(しかもカウアイ島)在住とか、nodeコアメンバーがいたりとメンツが面白い会社
- エントリの本題はosx/ios向けにspdyクライントライブラリ出した件
- なんだが、ライブラリ出すまでの経緯とか
- twitterがCocoaSPDY出した件にも触れてて
- もっと早くだしてくれたら使ってたね、とか
- コンパクトだが勉強になって楽しい
以下斜め読んだ内容
- @voxer
- レイテンシをゼロに近づたいです
- レイテンシ下がるとユーザはもっとアクティブに。メッセージ送信量up
- これはログから分かる
- バックエンドの最適化
- これはずっとやってきた
- テクノロジースタック全て
- 今はnode,redis,riak,smartosつかってる
- 次はネットワークレベル
- まずは
stud
投入- だだしvoxerでforkしたもの
- Voxer/stud
- まずは
- そしてspdy
- voxerアプリは、常にhttpsで話さないといけない
- あと、パケットの先頭詰まり(head of line blocking)も厄介
- kee-aliveなコネクション?、pipelining?
- spdy使うメリット?
- ネットワークレベルでは周知?
- よくまとまってるdomumentあるし
- SPDY Performance on Mobile Networks - Make the Web Faster — Google Developers
- アプリ開発という観点でも実はメリットある
- spdy使ってみてわかった
- アプリの挙動把握、デバッグ、メンテ
- 前よりずっと簡単になった
- アプリ開発がよりシンプルになった
- ポイントは、tcpソケット1つで全てのリクエストを捌くという部分
- エラーハンドリングのロジック、キューイング、再送、バックグラウンドモード
- 全てが前よりもシンプルになった
- iSPDY
- ios/osxプラットフォーム向けライブラリ
- Voxer/iSPDY
- twitterが出したCocoaSPDY
- twitter/CocoaSPDY
- 取り組んでる問題はiSPDYと似てる
- もっと早く出してたら使ってた
- でもCocoaSPDYで用足りるというよりこれをベースに足りないもの足すと言う感じだが
- voxierアプリはspdyのserver pushをヘビーに使ってる
- アプリのリアルタイム更新してる部分
- 前はwebsocketかhttp pipeliningで頑張ってた部分
- websocketもpipeliningもトレードオフがあり
- クライアント、サーバー、ネットワーク、全てのレベルで
- spdy(とserver push)はリアルタイム更新にとってかなり理想的なソリューション
- tcpコネクション1つでクライアントにどんどん送れる
- iSPDYのデザインゴール
- spdy投入はトントン拍子にいった
- node使ってるし node-spdyがある
- iSPDY作ったのは、node-spdy作った人(=Fedor Indutny)
- stud使って、tls termination
- node側には暗号化されてないspdyストリームが流れる
- ここでnode-spdy使う
- (補足)
- iSPDYはNPNをサポートしない。
- readme曰く、最新のOpenSSLをクライアントに同梱必須がネック、と
- アプリのバイナリサイズ肥大化、アプリ開発の複雑化
- 古いバージョンのvoxerアプリ、android版など別platform
- これまで通りhttpsで話す
- node-spdyがフォールバックしてくれる
- サーバー側のコードベースは、ほとんどいじらずに済んだ