저번 글에선 WebRTC의 간단한 정의, 동작조건, 통신 원리, 주요 개념과 용어 등을 정리했습니다.
이번 글에선 WebRTC의 동작 원리와 한계점, 그리고 해결책을 알아봅시다.
이번글을 읽기 전에 이전 글을 읽고 오신다면 이해하기 더욱 편하기 때문에 읽고 오시는 것을 추천드립니다.
2026.01.12 - [Front-End] - WebRTC, 화상통화 구현이 어려운 당신을 위한 (1)
WebRTC, 화상통화 구현이 어려운 당신을 위한 (1)
여러분은 웹/앱을 통해 화상통화 또는 음성 통화를 해본 경험이 있으신가요?그렇다면 한 번쯤은 "이런 통화는 어떻게 구현하는 걸까?"라는 생각을 해보신 적도 있으실 텐데요.저희는 이번 글과
tccelestyn6248.tistory.com
그럼 바로 글 시작하겠습니다.
동작원리
먼저 동작원리를 알아봅시다.
WebRTC는 서로 다른 네트워크 환경이라 가정했을때,
STUN 서버를 활용하여 연결 가능한 정보를 받고, 시그널링 서버를 통해서 SDP를 주고받습니다.
이 SDP에는 ICE 후보의 연결 가능 IP주소 또한 포함되어 있어,
이 SDP를 주고받아 서로의 SDP를 WebRTC에서 연결이 설정된 후 나면 p2p 연결이 가능해집니다.


시그널링 서버는 연결과정에서만 필요하고 p2p 연결이 이후엔 필요가 없습니다.
p2p의 한계점
하지만 이렇게 연결한 p2p 연결에도 한계점이 존재하는데요
바로 참가자가 많아지면 과부하가 온다는 점입니다.
p2p 통신은 Peer마다 직접연결하는 방식이므로, n명이 참가하면 n(n-1)/2개의 연결이 필요해집니다.
예를 들어 15명이 참가한다고 가정한다면, 105개의 연결이 생성되게 됩니다.

이렇게 된다면 CPU에 과부하가 올 가능성이 매우 커집니다.
대신 p2p 연결은 서버에 별도의 부하가 없고, Peer 간의 직접적인 연결로 인해 실시간성이 보장됩니다.
그렇기 때문에 적은 사용자들만 필요로 할 때 사용되는 방식입니다.
하지만 이러한 p2p에도 해결방안이 존재하는데요.
해결방안
바로 중계 서버를 도입하는 방안입니다.
이러한 중계 서버를 도입하는 방식은 크게 2가지로 나눌 수 있습니다.
1. MCU (Multipoint Control Unit)
이 방식은 서버가 모든 영상을 하나로 합쳐서 보내주는 방식입니다. 즉, 미디어 트래픽을 중계해 주는 것이죠.
그렇기 때문에 수신측에선 합쳐진 영상을 받을 단 하나의 링크만 가지고 있으면 정상적으로 동작합니다.
비유하자면 비빔밥에 비유할 수 있습니다.
참여자(클라이언트)가 각자 집에서 '나물', '고추장', '밥' 등 재료(각 클라의 영상)을 식당(중계 서버)으로 보내면,식당에서 그 재료들을 하나로 비빕니다.
그럼 손님(수신 측)은 재료를 일일이 받아서 비빌 필요 없이,
식당에서 다 비벼져 나온 비빔밥 한 그릇(합쳐진 영상)을 받기만 하면됩니다.
그럼 여기서 힘든 일은 무엇일까요? 바로 식당(중계 서버)입니다. 참여자가 가져오는 재료가 많아질수록 식당의 일이 많아지고,
그로 인해 식당의 피로. 즉, 서버의 부하가 기하급수적으로 높아집니다.

2. SFU (Selective Forwarding Unit)
이 방식은 서버가 영상 전달만 해주는 방식입니다.
많은 사람들이 이 방식을 가장 많이 사용합니다.
p2p는 클라이언트 - 클라이언트 간의 연결을 진행했다면 이번에는 서버 - 클라이언트 간의 연결을 진행합니다.
각 참여자는 자신의 영상을 서버에 1번만 올립니다. 그러면 서버는 그 영상을 복제하여 다른 참가자들에게 그대로 배달합니다.
즉, p2p는 모든 참가자에게 각각 영상을 보내야 하는 반면, SFU는 영상을 1번만 보내면 서버가 모두 처리해 주는 식이죠.
이러한 방식은 p2p보다 클라이언트 부하가 훨씬 적으며, MCU보다 서버 부하 또한 적습니다.
하지만 참여자가 많아질수록 내려받는 데이터의 양은 여전히 늘어납니다.
3. 차이점
| 구분 | p2p(Mesh) | MCU | SFU |
| 서버 부하 | 없음 | 매우 높음 | 중간 |
| 클라이언트 부하 | 매우 높음 - 참여자 비례 | 매우 낮음 | 낮음 |
| 지연 시간 | 가장 낮음 | 높음 | 낮음 |
| 최대 참여자 | 2 ~ 4명 | 수백명 가능 | 수십 ~ 수백명 가능 |
이번글에선 WebRTC의 동작 원리와 한계점, 그리고 해결책을 간단하게 알아봤습니다.
마지막 글에선 예제 코드와 함께 WebRTC 사용법(코드)을 알아봅시다.
'Front-End' 카테고리의 다른 글
| 프론트엔드 상태관리? immer으로 간단하게 (0) | 2026.03.10 |
|---|---|
| WebRTC, 화상통화 구현이 어려운 당신을 위한 (3) (0) | 2026.03.10 |
| WebRTC, 화상통화 구현이 어려운 당신을 위한 (1) (1) | 2026.01.12 |
| NX와 함께하는 모노레포 알아가기 (0) | 2026.01.08 |
| 프론트엔드, 테스트해야할까? (0) | 2026.01.06 |