$30 off During Our Annual Pro Sale. View Details »
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
WebTransportの パッケージを作った話
Search
Kizuku
March 11, 2025
0
81
WebTransportの パッケージを作った話
Kizuku
March 11, 2025
Tweet
Share
More Decks by Kizuku
See All by Kizuku
Go言語でCQRS+ESの アプリを作ってみた
kizuku
0
570
学生こそ ISUCONに出よう!
kizuku
1
100
きのこカンファレンス開催予告! - エンジニアがこの先生きのこるには -
kizuku
0
180
WebSocketで バイナリを扱う方法 + OSTやりたくない?
kizuku
1
61
WebTransportは未来の技術?
kizuku
2
2.1k
Featured
See All Featured
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Java REST API Framework Comparison - PWX 2021
mraible
34
9k
Six Lessons from altMBA
skipperchong
29
4.1k
Into the Great Unknown - MozCon
thekraken
40
2.2k
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.8k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
11
960
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Agile that works and the tools we love
rasmusluckow
331
21k
Designing for humans not robots
tammielis
254
26k
Mobile First: as difficult as doing things right
swwweet
225
10k
Art, The Web, and Tiny UX
lynnandtonic
303
21k
The Myth of the Modular Monolith - Day 2 Keynote - Rails World 2024
eileencodes
26
3.2k
Transcript
WebTransportの パッケージを作った話 Fukuoka.go#21 Kizuku X:@Kizuku_tech
Kizuku 九州工業大学 学部4年 →先日、上京 好きな言語: Go X: @Kizuku_tech 趣味: イベント・カンファレンス
参加/運営 自己紹介
None
Go Elixir Swift SQL Bicep
In YAPC::Hakodate 2024
None
その時、発表していた パッケージが できた!! ほぼ
WebTransportについて 高効率で低遅延な通信を行うための新しい プロトコル OSI参照モデルで言うとアプリケーション層 IETFでの仕様はDraft段階(ver.12) https://datatracker.ietf.org/doc/draft-ietf-webtrans-overview/ QUIC上で動作
WebSocket WebTransport セキュリティ 速さ 柔軟性
WebTransportの 何が嬉しいのか
HTTPの歴史を振り返る
HTTPの歴史 http/0.9 http/1.0 http/1.1 http/2 http/3
HTTPの歴史 http/0.9 http/1.0 http/1.1 http/2 http/3
http/1.1 http/1.0が基礎となりその拡張版 PUTやDELETEが追加 アプリケーション層のHOL問題 暗号化は任意
http/2 マルチプレキシング テキスト→バイナリ トランスポート層のHOL問題 サーバープッシュ → 廃止
https://developer.chrome.com/blog/removing-push?hl=ja
http/3 QUICを採用(TCP → UDP) HOL問題の解消 ネットワークの切り替えに強い デフォルトでTLS1.3に対応 エコシステムが未熟
HOL問題 Head of Line Blocking 先頭のデータパケットの処理が遅延また はブロックされると、後続のパケットも 処理できなくなる現象 パフォーマンスの低下
None
None
WebTransportの嬉しさ UDP → 低遅延通信 信頼性が選択可能 Streaming(信頼性あり) Datagram (信頼性なし)
そもそもまだ仕様が固まっていない ブラウザが一部未対応(Limited availablilty) ライブラリが未発達 WebTransport APIはHTTPSの環境でし か動かない WebTransportの悲しさ
None
WebTransportのライブラリ事情 Python aioquic Go quic-go/webtransport-go
None
draftのver.2だよ 今までは余暇で作ってたよ 開発資金が苦しいので2024年6月で開発 ストップしたよ
じゃあ自分で作るか
None
特徴 gorilla/websocketから移行しやすい WebTransportの後方互換を保証 セッション管理をシャーディングで分散
None
None
Go有識者の皆様に質問
WebTransportのような 比較的高レイヤーなAPIで io.Writer/io.Readerを使うのは あまり嬉しくない?
LinuxのTraffic Controlを用いてネットワーク条件を制御し実験 ベンチマークツールにはGoの標準機能であるgo testを用いる 実験を行ったネットワーク環境 制限なし 狭帯域(1Mbps) パケットロス(10%ロス) 遅延(200ms遅延) 双方向ストリームを用いて実験を行い、
WebSocketとの性能の比較を行う 性能評価
性能評価
性能評価
まだ、公開していない...
公開していない理由 3月3日にdraft12が出た 複数クライアントの時の挙動にバグがあ る Docker環境でうまく動かない(カーネル パラメータをいじる必要がある) パフォーマンスがイマイチ テスト書いてない...
3月中には公開したい!