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 없이는 힘들었을 것