-
Notifications
You must be signed in to change notification settings - Fork 2
WebRTC
Kim Gaeun edited this page Apr 4, 2022
·
2 revisions
- 웹 브라우저 간에 플러그인의 도움 없이 서로 통신할 수 있도록 설계된 API
- 웹에서 실시간 미디어 스트림을 송수신할 수 있는 유일한 표준이며, 유일한 P2P 표준이다.
- 구글이 2010년 웹 RTC의 근간이 되는 여러 독점 기술 기업들(On2, GIPS)을 인수해서 오픈소스로 공개하고 표준화를 진행했다.
- P2P 기능을 기반으로 하는 서비스
- 전화 서비스(통화 앱), 전화 영여, 심리 및 의료상담 서비스 등에 활용되고 있다.
- 낮은 지연시간을 필요로 하는 생방송 서비스에 유용하다.
- 라이브 커머스, 라이브 옥션, 라이브 퀴즈 등 시청자와 활발한 소통이 필요한 분야에 활용되고 있다.
- 화상회의 등 다수의 사람들이 원격으로 만나는 환경에서 활용되고 있다.
- 코로나19 이후 특히 주목받았다.
- 클라이언트 간의 다중 연결 방식이다.
- 서버 자원을 사용하지 않는 대신 각 클라이언트의 네트워크 I/O 부하가 높게 발생할 수 있다.
- 연결해야 할 클라이언트가 많을 경우 부하를 줄일 수 있는 알고리즘 구현이 필요하다.
- 서버를 이용하여 클라이언트의 미디어 스트림을 중계하는 역할을 수행하게 한다.
- 연결된 클라이언트 수만큼의 업로드 트래픽이 발생하는 P2P 방식과 달리 SFU는 업로드 커넥션을 1개만 유지하면 나머지는 서버에서 각 클라이언트로 분배하여 내려준다.
- 개별 클라이언트는 접속한 클라이언트 수만큼의 영상과 음성을 디코딩 해야 한다.
- 대표적으로 Zoom이 사용하고 있는 구조이다.
- 서버를 이용하여 업로드된 미디어스트림을 하나로 합쳐서 클라이언트에 1개의 미디어스트림을 내려주는 구조이다.
- P2P와 SFU에서 발생하는 트래픽을 줄일 수 있으나 미디어스트림을 합치는 동작에서 서버에 자원을 많이 소모하게 된다.
- 비디오 없이 오디오 통신만 사용하고, 한 방에 최대 4명까지 인원이 제한되기 때문에 Signalling Server를 만들어서 P2P 방식으로 구현해도 클라이언트의 부하가 크지 않을 것이다.
- SFU나 MCU는 우리가 직접 프로젝트에서 구현하기 어렵다.
- WebRTC에서는 MediaStream, RTCPeerConnection, RTCDataChannel 3가지의 객체를 통해 데이터 교환이 이루어진다.
- 이 때 RTCPeerConnection들이 적절하게 데이터를 교환할 수 있게 처리해주는 과정을 Signalling이라고 한다.
- 클라이언트는 Signalling Server를 통해 통신을 열고 닫기 위한 세션 컨트롤 메시지, 에러 메시지, 코덱, 대역폭, 미디어 유형, IP 주소 등을 교환한다.
- WebRTC를 사용하기 위해 별도로 구축해야 하며, Web socket, SIP, XMPP/Jingle 등의 기술이 활용될 수 있다.