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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kizuku
March 11, 2025
0
90
WebTransportの パッケージを作った話
Kizuku
March 11, 2025
Tweet
Share
More Decks by Kizuku
See All by Kizuku
Go言語でCQRS+ESの アプリを作ってみた
kizuku
0
630
学生こそ ISUCONに出よう!
kizuku
1
100
きのこカンファレンス開催予告! - エンジニアがこの先生きのこるには -
kizuku
0
180
WebSocketで バイナリを扱う方法 + OSTやりたくない?
kizuku
1
64
WebTransportは未来の技術?
kizuku
2
2.2k
Featured
See All Featured
Are puppies a ranking factor?
jonoalderson
1
2.7k
Typedesign – Prime Four
hannesfritz
42
3k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
27k
[RailsConf 2023 Opening Keynote] The Magic of Rails
eileencodes
31
9.9k
B2B Lead Gen: Tactics, Traps & Triumph
marketingsoph
0
57
How to optimise 3,500 product descriptions for ecommerce in one day using ChatGPT
katarinadahlin
PRO
0
3.4k
Information Architects: The Missing Link in Design Systems
soysaucechin
0
780
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.6k
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
460
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
16
1.8k
Un-Boring Meetings
codingconduct
0
200
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月中には公開したい!