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
72
WebTransportの パッケージを作った話
Kizuku
March 11, 2025
Tweet
Share
More Decks by Kizuku
See All by Kizuku
Go言語でCQRS+ESの アプリを作ってみた
kizuku
0
430
学生こそ ISUCONに出よう!
kizuku
1
99
きのこカンファレンス開催予告! - エンジニアがこの先生きのこるには -
kizuku
0
180
WebSocketで バイナリを扱う方法 + OSTやりたくない?
kizuku
1
61
WebTransportは未来の技術?
kizuku
2
1.9k
Featured
See All Featured
It's Worth the Effort
3n
185
28k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
Done Done
chrislema
185
16k
No one is an island. Learnings from fostering a developers community.
thoeni
21
3.4k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.5k
Optimizing for Happiness
mojombo
379
70k
Art, The Web, and Tiny UX
lynnandtonic
301
21k
GraphQLとの向き合い方2022年版
quramy
49
14k
Mobile First: as difficult as doing things right
swwweet
223
9.9k
Site-Speed That Sticks
csswizardry
10
750
StorybookのUI Testing Handbookを読んだ
zakiyama
30
6k
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月中には公開したい!