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