Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Server Push Middleware "Plasma"
Search
stormcat24
April 29, 2017
Programming
2
5.1k
Server Push Middleware "Plasma"
stormcat24
April 29, 2017
Tweet
Share
More Decks by stormcat24
See All by stormcat24
素早く賢く失敗するDeveloper Productivityの実現を目指して
stormcat24
2
2.8k
KubernetesのマニフェストをそれなりにCIしたい
stormcat24
4
1.1k
令和時代のSaaS開発
stormcat24
1
210
History in 5 years of CircleCI and CyberAgent
stormcat24
3
770
Kubernetes Handson Osaka
stormcat24
5
520
Kubernetes Handson
stormcat24
5
4.1k
DockerとKubernetesでアプリケーション開発にコンテナをフル活用!
stormcat24
0
270
Base Image Journey 2018
stormcat24
29
120k
kotlin-fest
stormcat24
13
17k
Other Decks in Programming
See All in Programming
データアナリストが行うDatabricksを活用したETLの自動化事例
shinoa
0
250
両面どころかインフラもTSでできるよ ~ 全方位TypeScriptによるプロダクト開発 ~
myfinder
9
3.2k
StreamlitとTerraformでデータカタログを作った話
gussan0223
0
290
Designing for tomorrow's programming workflows
honnibal
PRO
2
110
今の SmartHR にエンジニアで入社するとどうなるの?
daisukeshinoku
5
4.6k
Javaエンジニアのための Nodejs/Nuxt3入門
hidekatsu_izuno
0
280
GitHub Actionsで泣かないためにやっておきたい設定 / Recommended GHA settings to avoid crying
pinkumohikan
3
480
educure_カリキュラム生操作マニュアル.pdf
linew_official
0
430
1인 개발자로 행복하게 살기 - GDG 송도 헬로월드 2024
benjaminkim
1
5.6k
CQRS/ES avec Symfony, c’est (trop) bien !
jeremyfreeagent
1
630
ゆるい個人開発のススメ
kuroppe1819
10
930
PHP8.3の機能を振り返る / Review of PHP 8.3 features
seike460
PRO
1
110
Featured
See All Featured
Imperfection Machines: The Place of Print at Facebook
scottboms
258
12k
The Invisible Side of Design
smashingmag
293
49k
StorybookのUI Testing Handbookを読んだ
zakiyama
10
4.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
320
20k
Code Review Best Practice
trishagee
54
15k
Debugging Ruby Performance
tmm1
69
11k
GraphQLとの向き合い方2022年版
quramy
30
12k
Intergalactic Javascript Robots from Outer Space
tanoku
266
26k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
226
16k
WebSockets: Embracing the real-time Web
robhawkes
59
7k
Making Projects Easy
brettharned
107
5.5k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
1
1.3k
Transcript
Server Push Middleware “Plasma” @stormcat24 2017.04.29 そうだ Go、京都。
‣ CyberAgent, Inc. ‣ FRESH! https://freshlive.tv ‣ FRESH!はmackerelを利用しています(これ大事) ‣ http://blog.stormcat.io
‣ ワタシGoチョットデキル ‣ 最近の興味はRustとKotlin stormcat24
天皇賞のついでに喋りに来ました
突然ですがポーリングしてますか
ポーリングのシーン・・・ ‣ アプリケーションの状態変化の検知 ‣ 通知を疑似的に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!