Server Push Middleware“Plasma”@stormcat242017.04.29 そうだ Go、京都。
View Slide
‣ CyberAgent, Inc.‣ FRESH! https://freshlive.tv‣ FRESH!はmackerelを利用しています(これ大事)‣ http://blog.stormcat.io‣ ワタシGoチョットデキル‣ 最近の興味はRustとKotlinstormcat24
天皇賞のついでに喋りに来ました
突然ですがポーリングしてますか
ポーリングのシーン・・・‣ アプリケーションの状態変化の検知‣ 通知を疑似的にServer Pushぽく見せたり‣ Job Queueのロングポーリング
あまりにも多くのHTTPリクエストが討ち死にしてきたほぼ同じレスポンスだというのに・・・※応仁の乱
世の中のポーリングを撲滅したい
https://github.com/openfresh/plasma
Plasma is‣ Go製の汎用的なServer Push型ミドルウェア‣ gRPC StreamとServer-Sent Event(SSE)に対応‣ Web/iOS/Android/Serverから状態変化検知を撲滅したくて構想‣ 実装はインターン生(@upamune)がほぼ一人でやった
クライアントは必要なイベントタイプを指定し、subscribeするだけでデータが降ってくる
Plasmaへの接続‣ gRPC Streamの場合‣ proto定義がPlasmaのリポジトリにあるので、protogenでstubを作る‣ SSEの場合‣ polyfillあります https://github.com/Yaffle/EventSource‣ サーバから一定期間データが来ないと接続が切れるブラウザがあるので、Plasmaは切れないようにHeartbeatする
ユースケース‣ 状態変化の監視のためポーリングをサーバプッシュに置き換える‣ Microservices間で別のサービスで起きたイベントを受け取る‣ Microservicesを跨いだキャッシュの伝搬(試験運用中!)
Server Pushはいいぞ
さあ、ポーリングの屍を乗り越えて行こう※現在進捗10%
Thanks!