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
WebTransportの パッケージを作った話
Search
Kizuku
March 11, 2025
0
84
WebTransportの パッケージを作った話
Kizuku
March 11, 2025
Tweet
Share
More Decks by Kizuku
See All by Kizuku
Go言語でCQRS+ESの アプリを作ってみた
kizuku
0
610
学生こそ ISUCONに出よう!
kizuku
1
100
きのこカンファレンス開催予告! - エンジニアがこの先生きのこるには -
kizuku
0
180
WebSocketで バイナリを扱う方法 + OSTやりたくない?
kizuku
1
62
WebTransportは未来の技術?
kizuku
2
2.2k
Featured
See All Featured
Writing Fast Ruby
sferik
630
62k
世界の人気アプリ100個を分析して見えたペイウォール設計の心得
akihiro_kokubo
PRO
65
35k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Typedesign – Prime Four
hannesfritz
42
2.9k
Building Experiences: Design Systems, User Experience, and Full Site Editing
marktimemedia
0
370
The AI Search Optimization Roadmap by Aleyda Solis
aleyda
1
5.1k
Building Adaptive Systems
keathley
44
2.9k
How STYLIGHT went responsive
nonsquared
100
6k
Leading Effective Engineering Teams in the AI Era
addyosmani
9
1.5k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
540
Agile that works and the tools we love
rasmusluckow
331
21k
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月中には公開したい!