SnapchatのQUICの導入事例の記事を読んだので備忘録として書きました。
QUICの導入による、遅延の改善、BBRの適用によるエラーレート(接続タイムアウト、切断、などのエラーの発生率)、マイグレーションによるリクエスト成功率の向上、について触れられていました。
元記事は短いので元記事を読むのがいいかも?
snapchatのユース―ケースへのQUICの導入による向上
以下のような、改善がsnapchatのユースケースに適していると考えているようです。
Faster Connection Establishment
90%値で、300msecの遅延が発生します。この遅延が削減されるとユーザーの待ち時間を減らしユーザーエクスペリエンスを改善で決まる。
Improved Congestion Control
Snap (snapchatの中のサービスの一つではと推測します)では、アップロードするメディアが10MBになることもあります。良い輻輳制御アルゴリズムがスループットの改善と遅延の削減につながり、巨大なメディアファイルへのエラーレートが減らせるようです。 この記事でいうエラーレートには接続のタイムアウト、接続が失われる、リクエストのタイムアウト、などが含まれているようです。
Multiplexing without head-of-line blocking
短いコンテンツに対する方法なユースケースがあります。これらは通常単一の接続’上でダウンロードされている。QUICによってHTTP/2のブロッキングの問題を取り除くことができます。
Connection migration across IP addresses
友人とアプリを使用しているときに、Wi-Fiの接続が失われることによってメッセージの送信に失敗するとエクスペリエンスが低下します。コネクションマイグレーションがこれを解決します。
Detection of lost connection
長いロードスピナー(ロード中にくるくるしているアイコン)は、特にフルスクリーンモードで楽しんでいるときに邪魔になります。 QUICでは接続が切れてリクエストが失敗しても、ユーザーフレンドリーなUIを提供しながら検知してリトライすることができます。
QUICの採用
Snapchatでは、Cronet というGoogleの実装を採用しているようです。 QUICの導入以外に、リッチなメトリクスとログによるObservabilityの改善も得られたようです。
導入結果の紹介
QUICの導入で、以下の3つの結果が得られたようです。
一つ目は遅延の改善です。
2019年10月に広告に対して、QUICを適用可能にしたようです。その結果、90パーセンタイル値と99パーセンタイル値、エラーレートが改善したことが図に表されています。
表の上部では、ネットワーク遅延について言及されています。 P50(50パーセンタイル値)ではほぼ差がありませんが、P90 (90パーセンタイル値)では6%、P99(99パーセンタイル値)では24%もの改善が見られます。
ページ下部のエラーレートでは、あまり差が出ていないようです。
レイテンシーを句にと地域でさらにブレイクダウンすると、相対的にネットワーク品質が悪い環境や、サービスから地理的に遠い場所で大きなレイテンシーの改善が見られたようです。
2つ目は、BBRの導入によるアップロード時のエラーレートの改善です。
BBRを導入したときの改善が表に書かれています。 P50、P90の時は、ペイロードが100KB以上の時に大きな改善が見られます。また、P99の場合はサイズによらず改善に効果が大きいようです。
三つ目はマイグレーションの結果です。 Androidでコネクションマイグレーションを可能にすることで、Wi-Fiの接続が切れるような場合でもリクエストの成功率が20%向上したようです。
今後について
QUICのカバレージの向上、BBRV2や、iOSのコネクションマイグレーションの導入でさらなる向上を目指しているようです。
所感
2016年頃のGoogleの論文から言われていた 相対的にネットワーク品質が悪い環境や、サービスから地理的に遠い場所で大きなレイテンシーの改善が見られた という結果が出たのは興味深いです。
また、マイグレーションの効果も期待ができるのではないかと思いました。(もうちょっと詳細を記事に書いてくれると嬉しいなと思いますが。。。)