기술면접
WebRTC(Web Real Time Communication)
이름 그대로 웹 브러우저 간에 플러그인 없이 통신 가능한 실시간 커뮤니티 서비스이며
음성 / 영상 / p2p 파일공유 기능을 이용할 수 있다.
정리하면 서버를 통하기 않고 바로 상태 브라우저로 정보를 전달(P2P : Peer to Peer)할 수 있다는 말이다.
WebRTC vs WebSocket
WebSocket의 상위 기술이 WebRTC 이며 기존의 WebSocket
은 서버를 중심으로 Request 와 Respond 으로 정보 전달이
이루어진다. 때문에 메모리문제
, 전달속도
비용
문제가 상당하다.
이러한 문제를 해결하고자 등장한 것이 WebRTC
이다.
브라우저간 빠른 정보 전달이 가능한 이 기술은 기존 서버에서 발생한 메모리 문제
, 전달 지연
문제를 해결할 수 있었다
그러나 기본 p2p 방식을 이용하는 이 기술은 Up - Down Link
의 수가 각 노드당 (n-1)개의 링크로 연결되어 있어
동시에 많은 유저가 접근하게 될 경우 그 수만큼 데이터를 보내고 받아오는 과정을 거쳐야하기 때문에 부하가 발생할 수 있다.
WebSocket 통신방식
WebRTC 통신방식
WebRTC 서버 종류
Mesh(p2p)방식
- 특징
- peer 간의 offer, answer라는 session 정보 signal만을 중계한다.
- 따라서 처음 WebRTC가 peer간의 정보를 중계할 때만 서버에 부하가 발생한다.
- peer간 연결이 완료된 후에는 서버에 별도의 부하가 없다.
- 장점
- 단점
- N:N 혹은 N:M 연결에서 클라이언트의 과부하가 급격하게 증가한다.
SFU(Selective Forwarding Unit) 방식
- 특징
- 종단 간 미디어 트래픽을 중계하는 중앙 서버 방식이다.
- 클라이언트 peer간 연결이 아닌, 서버와 클라이언트 간의 peer를 연결한다.
- 1:1, 1:N, N:N 혹은 N:M 등 모든 연결 형식에서 클라이언트는 연결된 모든 사용자에게 데이터를 보낼 필요없이 서버에게만 자신의 영상 데이터를 보내면 된다.(즉, Uplink가 1개다.)
- 하지만 1:N, N:N 혹은 N:M 형식이라면 상대방의 수만큼 데이터를 받는 peer를 유지해야한다.
- 1:N 형식 또는 소규모 N:M 형식의 실시간 스트리밍에 적합하다.
- 장점
- 데이터가 서버를 거치고 Signaling 서버(P2P 방식)를 사용할 때 보다 느리긴하지만 비슷한 수준의 실시간성을 유지할 수 있다.
- Signaling 서버를 사용하는 것보다 클라이언트가 받는 부하가 줄어든다.
- 단점
- Signaling 서버보다 서버 비용이 증가한다.
- 대규모 N:M 구조에서는 여전히 클라이언트가 많은 부하를 감당한다.
MCU(Multi-point Control Unit) 서버
- 특징
- 다수의 송출 미디어를 중앙 서버에서
혼합(muxing)
또는 가공(transcoding)
하여 수신측으로 전달하는 중앙 서버 방식이다
예를 들어,
5인이 WebRTC 연결을 한다면 자신을 제외한 다른 4인의 video 데이터를 하나의 video 데이터로 편집하고,
audio 데이터도 마찬가지로 편집하여 한 명에게 보낸다. 이 작업을 남은 4명에게도 동일하게 적용한다.
- 클라이언트 peer간 연결이 아닌, 서버와 클라이언트 간의 peer를 연결한다.
- 모든 연결 형식에서 클라이언트는 연결된 모든 사용자에게 데이터를 보낼 필요없이 서버에게만 자신의 영상 데이터를 보내면 된다.
- 모든 연결 형식에서 클라이언트는 연결된 사용자의 수와 상관없이 서버에게서 하나의 peer로 데이터를 받으면 된다.
- 중앙 서버의 높은 컴퓨팅 파워가 요구된다.
- 장점
- 클라이언트의 부하가 현저히 줄어든다.(항상 Uplink 1개, Downlink 1개로 총 2개)
- N:M 구조에 사용 가능하다.(적합…하다고 할 수 있을 지는 잘 모르겠다. 다른 서버들보다는 적합하다.)
- 단점
- WebRTC의 최대 장점인 실시간성이 저해된다.
- video, audio를 결합하는 과정에서 비용이 많이 든다.
🧾Reference
WebSocket