본문 바로가기
WebRTC

WebRTC 란? (개념정리)

by 도현위키 2022. 1. 5.

web RTC

 

 

요즘 코로나로 인해서 많은 회사들이 비대면으로 회의를 진행하고 있다. 나 같은 경우는 IT 동아리를 참여하고 있는데,  원래는 대면으로 진행했던 동아리였지만 코로나로 인해서 게더타운 이라는 서비스를 이용해서 비대면으로 매주 세션을 진행하고 있다. 이러한 비대면 회의를 진행할 수 있게 도와주는 여러 플랫폼들이 있는데 그중 대표적으로 Google Meet, Discord, Gather Town, Zoom 같은 것들이 있다. 이 서비스들 중 Zoom을 제외하고는 모두 웹 브라우저에서 화상회의를 진행할 수 있다. 이렇게 어떠한 소프트웨어 설치 없이 웹 브라우저만 있으면 화상회의를 가능하게 해주는 기술이 바로 webRTC 기술이다.

 

webRTC란?

그렇다면 이 webRTC 기술은 정확히 어떤 것일까 ?? MDN의 WebRTC 문서에서는 WebRTC를 다음과 같이 정의하고 있다.

WebRTC(Web Real-Time Communication)은 웹 애플리케이션과 사이트가 중간자 없이 브라우저 간에 오디오나 영상 미디어를 포착하고 마음대로 스트림 할 뿐 아니라, 임의의 데이터도 교환할 수 있도록 하는 기술입니다. WebRTC를 구성하는 일련의 표준들은 플러그인이나 제 3자 소프트웨어 설치 없이 종단 간 데이터 공유와 화상 회의를 가능하게 합니다.

 

위에 내용을 조금 더 쉽게 정리하자면, WebRTC는 웹 또는 앱(Android, IOS)에서 별도의 소프트웨어, 플러그인 없이 음성, 영상, 텍스트 같은 데이터를 브라우저끼리 주고 받을 수 있게 해주는 기술이라고 할 수 있다.

 

webRTC는 구글이 GIPS(음성/영상 코덱 및 에코캔슬링 기술 보유 회사), On2(비디오 코덱 기술 보유 회사)를 인수하면서  2011년도에 이 기술을 webRTC라는 이름으로 공개한 것이 webRTC의 탄생이라고 볼 수 있다. 

출처: https://webrtclab.herokuapp.com/intro

 

해당 프로젝트는 오픈 소스이기 때문에 해당 링크를 통해  누구나 소스를 확인할 수 있고 수정도 가능하다.  

 

 WebRTC는 웹 브라우저에서의 실시간 통신을 가능하게 한다는 혁신성을 강조하면서, Mozilla, Opera 등과 같은 웹 브라우저 시장 주요 업체들의 지원을 받으며 빠르게 성장하였다. 2013년에는 Firefox와 Opera, Android의 Chrome 브라우저에서 WebRTC를 공식적으로 지원하기 시작하였고, 2014년에는 Android Opera가, 2016년에는 MS Edge와 Chrome 간 오디오 연결과 하드웨어 인코딩이 가능해졌다. 2017년에 마침내 Apple의 Safari11이 WebRTC를 지원하기 시작함과 동시에 WebRTC의 표준이 완성 단계에 접어들게 됨에 따라 전 세계 대다수의 사람들이 사용하는 주요 브라우저들에서 WebRTC를 모두 지원하게 되었다.

 

이번 코로나19의 확산으로 비대면 산업 분야의 필요성이 증대되어 WebRTC의 활용 및 성장 가능성이 빠르게 증가하고 있다. 영상회의, 협업, 교육, 상담, 원격진료, 고객지원, 채팅, 방송 등의 분야에서는 물론이고, AR, VR, IoT 등과의 결합을 통한 메타버스 분야에서도 매우 활발하게 사용되고 있다.

 

 

WebRTC 구성 방식

WebRTC가 어떤식으로 구성되어있는지 한번 간단하게 알아보자

두 단말이 서로 실시간 통신을 하기 위해서는 다음과 같은 사항이 필요하다

 

1. 기기의 스트리밍 오디오 / 비디오 / 데이터를 가져올 수 있을 것

2. 소통하고자 하는 기기의 IP 주소와 포트 등 네트워크 통신을 위한 데이터

3. 에러의 보고, 세션 초기화를 위한 신호 통신을 관리

4. 서로 소통할 수 있는 해상도인지, 코덱은 알맞은지 등 capability 정보 교환

5. 실제로 연결을 맺는다.

6. 이후 연결되는 동안 스트리밍 오디오 / 비디오 / 데이터를 주고받을 수 있어야 함

 

이 조건들을 충족하기 위해서 WebRTC는 다음과 같은 API들을 제공하고 있다.

  • MediaStream: 카메라와 마이크 등의 데이터 스트림 접근
  • RTCPeerConnection: 암호화 및 대역폭 관리 및 오디오, 비디오 연결
  • RTCDataChannel: 일반적인 데이터의 P2P 통신

이 3가지의 API를 통해서 데이터 교환이 이루어지며 RTCPeerConnection 들이 적절하게 데이터를 교환할 수 있게 처리해 주는 과정을 시그널링(Signaling)이라고 한다.

 

 

WebRTC의 구성 방식을 간단하게 살펴보았는데, 이 부분만 해도 처음 보는 용어들이 많이 나와서 처음 공부하는 분들한테는 많이 어려울 수 있다. 나도 처음 WebRTC를 공부할 때 개념 잡는 부분부터 막혀서 많이 힘들었던 기억이 있다. 다음 포스팅에서는 WebRTC에서 사용되는 용어들을 정리해보겠다.

 

댓글