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
63
WebTransportの パッケージを作った話
Kizuku
March 11, 2025
Tweet
Share
More Decks by Kizuku
See All by Kizuku
Go言語でCQRS+ESの アプリを作ってみた
kizuku
0
400
学生こそ ISUCONに出よう!
kizuku
1
98
きのこカンファレンス開催予告! - エンジニアがこの先生きのこるには -
kizuku
0
180
WebSocketで バイナリを扱う方法 + OSTやりたくない?
kizuku
1
59
WebTransportは未来の技術?
kizuku
2
1.7k
Featured
See All Featured
Building Flexible Design Systems
yeseniaperezcruz
328
39k
A better future with KSS
kneath
239
17k
Six Lessons from altMBA
skipperchong
28
3.9k
The Language of Interfaces
destraynor
158
25k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
8
680
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Being A Developer After 40
akosma
90
590k
YesSQL, Process and Tooling at Scale
rocio
173
14k
Into the Great Unknown - MozCon
thekraken
39
1.9k
Writing Fast Ruby
sferik
628
62k
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.7k
Building Better People: How to give real-time feedback that sticks.
wjessup
367
19k
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月中には公開したい!