เหตุผลที่เลือก Rust เพื่อสร้างระบบวิดีโอคอนเฟอเรนซ์ 3K, 60fps, 130ms
(blog.tonari.no)บันทึกประสบการณ์การพัฒนาวิดีโอคอนเฟอเรนซ์แบบ "เรียลไทม์" ของ Tonari
→ ความหน่วงของ Zoom และ WebRTC อยู่ที่ 315-500ms
เพื่อให้ได้ความหน่วงระดับเรียลไทม์ที่ 130ms แทนที่จะไปแตะต้อง WebRTC stack จำนวน 750,000 บรรทัด จึงตัดสินใจออกแบบและสร้างทั้งสแตกขึ้นใหม่ตั้งแต่ต้นให้เหมาะกับฮาร์ดแวร์ที่ต้องการ
→ เลือก Rust เพื่อความปลอดภัย ประสิทธิภาพ และการบำรุงรักษา
Crate ที่ใช้เป็นหลัก
→ สิ่งที่ดีกว่า standard library : crossbeam, parking_lot, bytes, socket2
→ ทำให้ log และ CLI ดูดีขึ้น : fern, structopt
→ ตัวช่วยของ cargo : cargo-release, cargo-udeps, cargo tree, cargo-geiger, cargo-flamegraph
จุดที่ Rust ยาก
-
ใช้เวลาคอมไพล์นาน
-
การครอบคลุมของไลบรารียังไม่มากพอ
-
ต้องการให้เขียนโค้ดอย่างถูกต้องและชัดเจนตั้งแต่แรก
-
ตัวอนุมานชนิดข้อมูลทรงพลังมากจนบางครั้งรู้สึกเหมือนใช้ภาษาที่เป็น dynamic type
-
ภาษายังคงพัฒนาอย่างต่อเนื่อง
ผลลัพธ์ของการเลือก Rust
-
ไม่เคยพบ downtime ที่เกี่ยวกับซอฟต์แวร์
-
ด้วยการใช้ทรัพยากรอย่างมีประสิทธิภาพ จึงเขียนโค้ดที่มีประสิทธิภาพสูงได้ไม่ยาก
-
การใช้ CPU และหน่วยความจำคาดการณ์ได้และสม่ำเสมอทั้งหมด
-
รับประกันความหน่วงและอัตราเฟรมที่คงที่
-
ประสบการณ์ในการดูแลรักษา codebase ก็ดีเยี่ยม
-
สุดท้ายสามารถสร้างผลิตภัณฑ์ที่เชื่อถือได้และดูแลรักษาได้ พร้อมมอบประสิทธิภาพที่รวดเร็วทั้งด้านอัตราเฟรม เวลาแฝง และประสิทธิภาพการใช้ทรัพยากร
→ ถ้าไม่มี Rust ก็คงทำได้ยาก
ยังไม่มีความคิดเห็น