대규모 오디오 룸 개발: 트래픽 폭탄 피하는 2가지 마법(DTX & RED)
디스코드(Discord)나 엑스 스페이스(X Spaces) 같은 다자간 오디오 룸 서비스를 운영할 때 가장 큰 고민거리는 무엇일까요? 바로 '서버 트래픽(비용)'과 '음질(사용자 경험)' 사이의 딜레마입니다.
수십, 수백 명이 모인 오디오 룸에서 발생하는 막대한 데이터를 효율적으로 처리하기 위해, 틴캔(Tin Can) 서비스가 활용하는 WebRTC의 핵심 기술 2가지를 소개합니다.
1. 오디오 룸의 숨은 적, '침묵'의 트래픽
20명이 모인 오디오 룸을 상상해 보세요. 모두가 마이크를 켜고 있지만 실제 대화를 주도하는 사람은 2~3명뿐입니다. 나머지 17명은 주로 듣고 있죠.
만약 아무런 최적화를 하지 않는다면, 17명의 마이크에서도 '무음' 상태의 오디오 패킷이 쉴 새 없이 서버로 전송됩니다. 이는 엄청난 대역폭 낭비입니다.
2. DTX (불연속 전송): 침묵을 효율로 바꾸는 기술
이 문제를 해결하는 첫 번째 열쇠가 DTX(Discontinuous Transmission)입니다.
DTX를 활성화하면 오디오 코덱(Opus) 내의 음성 활동 감지기(VAD)가 마이크로 들어오는 소리를 분석합니다. 사람의 목소리가 감지되지 않으면 — 침묵 상태이거나 배경 소음만 있을 때 — 무거운 오디오 패킷 전송을 즉시 멈춥니다. 대신 연결이 끊겼다는 오해를 막기 위해 아주 가벼운 '백색 소음(Comfort Noise)' 패킷만 가끔씩 보냅니다.
DTX 효과 요약
다자간 방의 발언자가 전체의 20%라면, DTX 적용 시 이론상 전체 트래픽의 최대 80%까지 절감할 수 있습니다. 100명 규모 오디오 룸이라면 비용 차이가 매우 극적입니다.
3. RED (오디오 중복 전송): 끊김 없는 대화를 위한 보험
트래픽을 아끼는 것도 중요하지만, 모바일 데이터나 와이파이가 불안정한 환경에서는 목소리가 뚝뚝 끊기는 현상(Packet Loss)이 발생할 수 있습니다. 이때 필요한 것이 RED(Redundant Audio Data)입니다.
현재 패킷을 보낼 때, 직전에 보냈던 패킷의 정보를 중복으로 덧붙여서 보냅니다. 중간에 패킷 하나가 유실되더라도 다음 패킷에서 유실된 데이터를 복구할 수 있어 열악한 네트워크 환경에서도 최상의 음질을 보장합니다.
RED의 트레이드오프
중복 데이터를 덧붙이는 만큼 패킷 크기가 커져 트래픽이 다소 증가합니다. 안정적인 네트워크 환경(유선 PC)에서는 RED의 혜택이 크지 않으므로 상황에 맞게 선택하세요.
4. 틴캔이 추천하는 최적의 옵션 밸런스
트래픽 절감과 음질 방어를 동시에 잡기 위해, 오디오 룸 개발 시 다음과 같은 설정을 권장합니다.
트래픽 절감(가성비) 최우선
dtx: true, red: false안정적인 네트워크 환경의 PC 게이머, 사무실 회의 등 유선 환경에 적합합니다.
모바일 환경 및 고음질 보장
추천 밸런스형dtx: true, red: true모바일 사용자가 많거나 네트워크 환경이 불균일한 대규모 오디오 룸에 적합합니다. 틴캔 역시 이 설정을 기본으로 사용합니다.
효율적이고 선명한 오디오 룸, 기술에 대한 이해부터 시작됩니다. DTX와 RED 설정을 올바르게 적용한 음성채팅을 직접 경험해 보고 싶다면 tincan을 사용해 보세요.