
WebRTC는 웹 브라우저나 모바일 애플리케이션이 플러그인 없이 P2P(Peer-to-Peer) 방식으로 오디오, 비디오, 데이터를 실시간으로 주고받을 수 있도록 하는 오픈 표준 기술입니다.
이는 단순히 통신 프로토콜을 넘어, 실제 통신에 필요한 API 집합을 포함합니다.
WebRTC 자체는 특정 라우팅 방식(MCU, SFU 등)을 강제하지 않습니다.
즉, WebRTC만으로도 두 사용자(A ↔ B) 간의 단순 P2P 통신이 가능하며, 여러 사용자 간에는 메시(Mesh) 형태의 연결도 가능합니다.
WebRTC는 클라이언트와 클라이언트, 또는 클라이언트와 서버 사이에서 미디어를 전송할 때 항상 사용되는 핵심 프로토콜입니다.
WebRTC에서 네트워크 연결 후보를 찾고 최적의 경로로 연결을 시도하는 프레임워크입니다.
로컬 IP, 공인 IP, TURN 릴레이 IP 등 다양한 네트워크 경로를 테스트하여 가장 효율적인 연결을 수립합니다.
즉, ICE는 연결 성립 프로세스 전체를 의미합니다.
NAT(Network Address Translation) 환경을 통과하기 위한 서버입니다.
주로 브라우저가 자신의 공인 IP 주소를 알아낼 수 있도록 돕는 역할을 합니다.
가볍고 빠르며, 주로 P2P 통신이 가능한 경우에 사용됩니다.
STUN만으로 직접적인 P2P 연결이 불가능할 때 중계 서버를 통해 데이터를 릴레이하는 역할을 합니다.
방화벽이 엄격하거나 복잡한 네트워크 환경에서 직접 연결이 어려울 때 유용하게 사용됩니다.
하지만 TURN 서버는 많은 대역폭을 소비하고 비용이 많이 발생할 수 있습니다.
SFU는 다자간 화상회의를 위한 미디어 라우팅 아키텍처입니다.
다자간 통화에서 모든 참가자가 다른 모든 참가자에게 개별 스트림을 직접 보내면 네트워크 부담이 커지는데, SFU는 이 문제를 해결합니다.
SFU 방식에서는 각 참가자가 서버에 자신의 스트림을 한 번만 업로드합니다.
SFU 서버는 이 스트림을 수신한 후, 다른 수신자들에게 선택적으로 "포워딩"해 줍니다.
이때 서버는 스트림을 믹싱하거나 트랜스코딩하지 않고, 원본 스트림을 그대로 전달하는 것이 특징입니다.
SFU는 WebRTC 위에 구축되어 미디어 전송은 WebRTC를 사용하되, 전송 방식(라우팅 아키텍처)으로 SFU를 적용하는 형태입니다.
MCU는 다자간 화상회의를 위한 또 다른 미디어 서버 방식입니다.
SFU와 결정적으로 다른 점은 서버가 미디어를 직접 처리하고 믹싱(합성)한다는 것입니다.
| 특징 | MCU (Multipoint Control Unit) | SFU (Selective Forwarding Unit) |
|---|---|---|
| 역할 | 미디어 믹싱 (합성) | 미디어 선택적 전달 |
| 서버 동작 | 모든 참가자 스트림을 수신, 하나로 합성 후 각 클라이언트에 단일 스트림 전송 | 참가자별로 필요한 스트림만 선택적으로 전달 (믹싱 없음) |
| 클라이언트 부하 | 낮음 (서버가 믹싱하여 한 스트림만 수신, 디코딩 부담 적음) | 높음 (여러 개별 스트림 수신, 디코딩 부담 큼) |
| 서버 부하 | 높음 (연산량 많음: 믹싱 및 트랜스코딩) | 상대적으로 낮음 (단순 포워딩) |
| 지연 (Latency) | 높음 (믹싱 및 인코딩 시간 소요) | 낮음 |
Mesh는 가장 단순한 다자간 통신 방식으로, 서버를 거치지 않고 모든 참가자가 서로 직접 P2P 연결을 맺는 모델입니다.
이는 순수한 WebRTC P2P 통신에 해당합니다.
현재 서비스 환경에서 MCU를 고려할 수 있지만, 다음과 같은 이유로 SFU 방식이 대규모 화상 회의에 더 적합합니다.
서버 CPU 부하가 엄청나게 큼: 참가자 수, 비디오 해상도, FPS에 비례하여 인코딩 작업을 수행해야 합니다
(예: 10명 참가 시 10개 스트림을 믹싱 후 다시 10개로 인코딩). 이로 인해 50~100명만 넘어가도 서버 증설 비용이 기하급수적으로 증가하여 기업 입장에서 비용 효율성이 떨어집니다.
지연(Latency) 증가: 믹싱과 인코딩 과정에 시간이 소요되므로, SFU의 실시간성에 비해 딜레이를 체감할 수 있습니다.
대규모 회의에 부적합: 위와 같은 CPU, 메모리 비용 문제 때문에 요즘에는 대부분의 대규모 화상 회의 서비스가 SFU로 대체되는 추세입니다.
그러므로 우리는 SFU 라이브러리 위주로 살펴볼 것이며, 아래 표에서 가장 눈길을 끄는 Jitsi와 Mediasoup에 대해 더 자세히 알아보겠습니다.
| 라이브러리/API | 오픈소스 | 커스터마이징 | 확장성 | 비용 | 주요 단점 |
|---|---|---|---|---|---|
| WebRTC | O | 매우 높음 | 중 | 무료 | 복잡한 시그널링, 대규모 한계 |
| Jitsi | O | 높음 | 중 | 무료 | UI 커스터마이징 필요 |
| Mediasoup | O | 높음 | 중 | 무료 | 웹소켓, HTTP 시그널링 등 직접 구축 필요 |
| Janus | O | 매우 높음 | 중 | 무료 | - |
| Twilio | X | 보통 | 높음 | 유료 | 비용, 일부 기능 부족 |
| Agora | X | 중 | 높음 | 유료 | 비용, 커스터마이징 난이도 |
| CometChat | X | 보통 | 높음 | 유료 | 확장성 비용, 백엔드 한계 |
| Sendbird Calls | X | 보통 | 높음 | 유료 | 비용, 일부 고급 기능 미지원 |
| Zoom SDK | X | 낮음 | 높음 | 유료 | 보안 이슈, 무료 플랜 제한 |
Mediasoup은 Node.js 기반의 서버 사이드 WebRTC SFU 라이브러리로, 대규모 멀티파티 화상회의 및 실시간 스트리밍에 최적화되어 있습니다.
아키텍처: Node.js 프로세스와 복수의 C++ 워커(worker)가 CPU 코어별로 분산 실행되어, 하나의 서버에서 수백~수천 명의 미디어 스트림을 효율적으로 처리할 수 있습니다.
확장성: router.pipeToRouter() 기능을 통해 여러 서버/워커 간에 트래픽을 분산시켜, 단일 서버의 한계를 넘는 대규모 회의를 지원합니다.
코덱 지원: VP8, VP9, H.264, Opus 등 다양한 미디어 코덱을 유연하게 지원하며, 송출자별로 코덱을 다르게 설정하는 등 세밀한 제어가 가능합니다.
커스터마이징: 신호 처리부터 미디어 라우팅, 외부 미디어 연동(FFmpeg, GStreamer 등)까지 거의 모든 부분을 개발자가 직접 설계하고 구현할 수 있습니다.
UI 미포함: Mediasoup 자체에는 사용자 인터페이스가 포함되어 있지 않으므로, 모든 클라이언트 시그널링 및 UI를 직접 개발해야 합니다.
Jitsi는 완성형 오픈소스 화상회의 솔루션 (Jitsi Meet)으로, 서버 및 클라이언트(웹/모바일)까지 모두 제공합니다
아키텍처: Jitsi Meet(프론트엔드), Jicofo(회의 관리), JVB(Jitsi Video Bridge, SFU), Prosody(XMPP 시그널링) 등으로 구성된 모듈형 구조입니다.
확장성: JVB(Videobridge)를 여러 대 추가하고, Octo(분산 처리) 및 로드밸런싱을 적용하면 200~250명 이상의 대규모 회의도 지원하며, 최적화 시 수백~수천 명까지 확장 가능합니다.
기본 기능: 화면 공유, 채팅, 녹화, 브라우저 기반 UI, 모바일 앱 등 대부분의 화상회의 기능이 기본으로 제공됩니다.
커스터마이징: 로고, UI 변경, 기능 추가 등 커스터마이징이 가능하지만, Mediasoup만큼의 자유도는 아닙니다.
| 항목 | Mediasoup | Jitsi Meet |
|---|---|---|
| 확장성 | 매우 높음 (수백~수천 명, 워커/라우터 분산) | 높음 (JVB/Octo로 200~250명, 확장 가능) |
| 아키텍처 | SFU, Node.js + C++, 완전 모듈/커스텀 | 완성형 솔루션, 모듈 구조 (XMPP + Videobridge + Web UI) |
| 시그널링 | 직접 구현 | 내장 (Prosody) |
| 대규모 확장성 | 매우 유연함 (Worker 분산) | Octo로 다중 브리지 가능 |
| 커스터마이징 | 매우 높음 (모든 기능 직접 구현) | 중간 (UI/기능 위주) |
| 개발 난이도 | 높음 (WebRTC/미디어 서버 지식 필요) | 낮음 (즉시 사용 가능) |
| UI 제공 | 없음 (직접 개발) | 있음 (웹/모바일) |
| 커뮤니티 | 중간 | 매우 활발 |
| 주요 용도 | 맞춤형 대규모 플랫폼, 고급 미디어 처리 | 일반 화상회의 서비스, 빠른 구축 |