| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- html
- javascript
- c언어
- 알고리즘 기초
- CSS
- 코딩
- 코딩테스트
- Mini-React
- Git
- 팀프로젝트
- 백준
- 개발자
- 정렬
- DFS
- 프론트앤드
- 알고리즘
- 프로그래머스
- react
- 해시
- frontend
- 정글
- 프론트엔드
- HTML기초
- js
- Python
- 그래프
- 크래프톤 정글
- 그리디
- 혼자 공부해서 개발까지
- BFS
Archives
- Today
- Total
민혁이의 IT스토리
[WebRTC] - SFU 알아보기 본문
WebRTC란 무엇인가?
웹 브라우저나 모바일 앱 간에 중간 서버를 거치지 않고 실시간으로 비디오, 오디오, 데이터를 직접 주고받을 수 있게 해주는 오픈소스 기술입니다.
WebRTC의 핵심 특징
- P2P (Peer-to-Peer): 클라이언트와 클라이언트가 직접 연결되어 데이터를 주고받습니다. 서버를 거치지 않으므로 지연 시간이 극도로 짧다.
- UDP 기반: 데이터의 무결성보다 속도가 중요한 실시간 스트리밍에 최적화된 UDP 프로토콜을 주로 사용한다.
- 표준화: 구글, 애플, 마이크로소프트 등 주요 브라우저 엔진이 모두 지원한다.
WebRTC은 3가지 방식이 있다.
- Mesh 방식 (P2P) : 각 사용자가 다른 모든 사용자에게 직접 데이터를 보내는 방식이다.
- 장점: 서버 비용이 거의 없고 보안이 뛰어나다.
- 단점: 참여자가 늘어날수록 사용자의 PC 부하와 네트워크 업로드 대역폭 부담이 급격히 증가합니다. (보통 3~4명이 한계)
- MCU (Multipoint Control Unit) 방식 : 중앙 서버가 모든 사용자의 영상/음성을 받아서 하나의 스트림으로 합친 뒤 다시 내려주는 방식
- 장점: 클라이언트는 스트림을 하나만 받으면 되므로 부하가 매우 적다.
- 단점: 서버가 영상을 합성(Encoding)해야 하므로 서버 비용이 매우 비싸고 지연 시간이 발생한다.
- SFU (Selective Forwarding Unit) 방식: 최근 가장 많이 사용되는 방식으로, 서버가 데이터를 받아서 필요한 곳에 뿌려주는 배대지(배송대행지) 역할을 한다.
결론 : SFU 방식을 사용하자
SFU(Selective Forwarding Unit) 방식의 집중 탐구
SFU 방식은 Mesh의 높은 클라이언트 부하 문제와 MCU의 높은 서버 비용 문제를 동시에 해결한 절충안입니다.
핵심 특징
- 라우팅(Routing) 역할: 서버는 영상을 합성하지 않고, 들어온 미디어 패킷을 그대로 다른 참여자들에게 전달만 합니다.
- 업로드는 한 번, 다운로드는 여러 번: 나는 서버에 내 영상 하나만 올리면 됩니다. 대신 다른 사람들의 영상은 각각 따로 내려받습니다.
- 유연한 제어: 서버가 "지금 말하는 사람의 영상만 고화질로 보내줘"와 같이 선별적인 전송이 가능합니다.
SFU의 장단점
다른 방식인 Mesh(P2P)나 MCU(Mixing)**와 비교했을 때 SFU가 갖는 확실한 강점이 있습니다.
| 구분 | 장점 | 단점 |
| 효율성 | 클라이언트의 상향(Upload) 대역폭과 CPU 부하가 크게 줄어듭니다. | 참여자가 늘어날수록 클라이언트의 하향(Download) 부하가 증가합니다. |
| 확장성 | 서버가 복잡한 연산(Mixing)을 하지 않아 MCU보다 훨씬 많은 인원을 수용합니다. | 서버 비용이 P2P 방식보다는 발생합니다. |
| 유연성 | 각 사용자마다 화면 레이아웃을 다르게 구성할 수 있습니다. | 서버 단에서 네트워크 패킷을 정교하게 제어하는 기술이 필요합니다. |
'web' 카테고리의 다른 글
| 폴더 구조 그대로 업로드하기: FileSystem API 활용법 (0) | 2025.12.29 |
|---|---|
| WebRTC 화상회의, 아무나 들어오게 할 건가요? (0) | 2025.12.27 |
| 웹서버 인증서 (0) | 2025.11.12 |
| HTTP (0) | 2025.11.12 |
| tiny.c로 배우는 HTTP와 소켓 프로그래밍의 기초 (0) | 2025.11.07 |