Server Push Middleware "Plasma"

Server Push Middleware "Plasma"

0aac627116c6e2a87b9ae179500801df?s=128

stormcat24

April 29, 2017
Tweet

Transcript

  1. Server Push Middleware “Plasma” @stormcat24 2017.04.29 そうだ Go、京都。

  2. ‣ CyberAgent, Inc. ‣ FRESH! https://freshlive.tv ‣ FRESH!はmackerelを利用しています(これ大事) ‣ http://blog.stormcat.io

    ‣ ワタシGoチョットデキル ‣ 最近の興味はRustとKotlin stormcat24
  3. 天皇賞のついでに喋りに来ました

  4. 突然ですがポーリングしてますか

  5. ポーリングのシーン・・・ ‣ アプリケーションの状態変化の検知 ‣ 通知を疑似的にServer Pushぽく見せたり ‣ Job Queueのロングポーリング

  6. あまりにも多くの HTTPリクエストが討ち死にしてきた ほぼ同じレスポンスだというのに・・・ ※応仁の乱

  7. 世の中のポーリングを撲滅したい

  8. https://github.com/openfresh/plasma

  9. Plasma is ‣ Go製の汎用的なServer Push型ミドルウェア ‣ gRPC StreamとServer-Sent Event(SSE)に対応 ‣

    Web/iOS/Android/Serverから状態変化検知を撲滅したくて構想 ‣ 実装はインターン生(@upamune)がほぼ一人でやった
  10. クライアントは必要なイベントタイプを指定し、 subscribeするだけでデータが降ってくる

  11. Plasmaへの接続 ‣ gRPC Streamの場合 ‣ proto定義がPlasmaのリポジトリにあるので、protogenでstubを作る ‣ SSEの場合 ‣ polyfillあります

    https://github.com/Yaffle/EventSource ‣ サーバから一定期間データが来ないと接続が切れるブラウザがあるの で、Plasmaは切れないようにHeartbeatする
  12. ユースケース ‣ 状態変化の監視のためポーリングをサーバプッシュに置き換える ‣ Microservices間で別のサービスで起きたイベントを受け取る ‣ Microservicesを跨いだキャッシュの伝搬(試験運用中!)

  13. Server Pushはいいぞ

  14. さあ、ポーリングの屍を乗り越えて行こう ※現在進捗10%

  15. Thanks!