3K・60fps・130msのビデオ会議を実現するためにRustを選んだ理由
(blog.tonari.no)Tonariによる「リアルタイム」ビデオ会議の実装レビュー
→ ZoomやWebRTCの遅延は315〜500ms
リアルタイム水準である130msの遅延を実現するため、WebRTCスタック75万行に手を入れるよりも、スタック全体を最初から目的のハードウェアに合わせて設計し、再実装することにした
→ セキュリティ、性能、保守性のためにRustを選択
主に使用したCrate群
→ 標準ライブラリより優れたもの: crossbeam, parking_lot, bytes, socket2
→ ログとCLIを美しく: fern, structopt
→ cargo支援ツール: cargo-release, cargo-udeps, cargo tree, cargo-geiger, cargo-flamegraph
Rustの難しい点
-
コンパイル時間が長い
-
ライブラリのカバレッジが不足
-
最初から正確で明確なコード記述を求められる
-
型推論器が強力すぎて、動的型付け言語を使っているように感じることがある
-
言語が今も進化し続けている
Rustを選んだ結果
-
ソフトウェア起因のダウンタイムを経験していない
-
効率的なリソース利用により、高性能なコードを容易に書けた
-
CPUとメモリ使用量はいずれも予測可能で一貫している
-
一貫した遅延時間とフレームレートを保証
-
コードベースの保守体験も素晴らしい
-
最終的に保守可能で信頼できる製品を作り上げ、フレームレート、レイテンシ、リソース効率の面で高速な性能を発揮した
→ Rustなしでは難しかっただろう
まだコメントはありません。