시작하며
코로나로 인해 마음 놓고 서로를 대면할 수 없는 시대로 살아온 지 벌써 2년이 되어갑니다. 우리 안에 공포가 자리 잡았고 그렇게 금방이라도 와르르 무너질 것 같았던 인간 사회는 이제는 그럭저럭 적응해가고 있는 듯합니다. 다행스럽게도 21세기를 살아가는 인간에게는 직접 만나지 않고도 문제를 해결할 수 있는 여러 도구를 갖고 있었기 때문입니다. 그중 하나가 바로 오늘 이야기할 WebRTC 기술인데요. 오늘 포스팅에서는 WebRTC에 대해 자세히 알아보고, WebRTC 응용 서비스를 개발할 수 있는 2가지 방법에 대해 살펴보겠습니다.
WebRTC란?
WebRTC는 서버를 최대한 거치지 않고 P2P(Peer-to-Peer Network)로 브라우저나 단말 간에 데이터를 주고받는 기술의 웹 표준입니다. 웹에서 실시간 미디어 스트림을 송수신할 수 있는 유일한 표준이고 또 유일한 P2P 표준이기도 합니다.
또한 WebRTC는 표준임과 동시에 표준을 구현한 오픈소스 프로젝트의 이름이기도 합니다. 사실 프로젝트가 먼저 있었고 표준화는 나중에 되었는데, 통신사와 통신솔루션 기업이 독점하고 있던 핵심 통신 기술을 구글이 주도해서 오픈소스화 및 표준화를 진행했습니다.
① WebRTC 역사
WebRTC 등장 이전에는 고가의 라이선스 구매 비용을 들여서 통화 기능, 화상회의 기능 등을 개발해야 했습니다. 하지만 2010년, IT 기술 중에서도 유독 라이선스 사용에 많은 비용이 드는 기술이었던 VoIP(Voice over Internet Protocol) 시장에 기존에는 상상하기 어려웠던 뉴스가 등장했습니다. 구글이 WebRTC의 근간이 되는 여러 독점 기술 기업들(On2, GIPS)을 인수해서 WebRTC 기술을 오픈소스로 풀어버린 겁니다. 이 기술들은 그전까지는 그야말로 세계 탑 수준의 미디어 엔진 및 코덱이었는데 이것을 오픈 한 뒤, 급기야 크롬 브라우저에 탑재시키고 표준화 단체까지 만듭니다. 그리고 이것을 2011년 말에 완료해버리는 놀라운 실행력을 보여줍니다. 기존 통신사와 거대 통신솔루션 기업들은 깜짝 놀라게 됩니다. 그리고 오늘날 WebRTC의 시대가 열렸습니다.
사실 오늘날의 WebRTC가 있기까지 구글의 기여는 이루 말할 수 없죠. 구글 덕분에 VoIP 서비스 이상의 다양한 혁신적인 서비스를 개발할 수 있는 세상이 열렸고 코로나19 바이러스로 인한 비대면 시대에 널리 쓰이는 기술 중 하나가 되었습니다. 구글이기에 가능했던 시도가 아니었을까 싶습니다.
② WebRTC의 특징
기술적인 관점에서 WebRTC는 상당히 독특합니다. 사실 너무 독특해서 쉽게 적용하기 어렵습니다. 하지만 이러한 독특함 덕분에 앞으로도 WebRTC 기술은 자신만의 자리를 지키며 성장할 것으로 보입니다.
WebRTC는 웹에서 사용할 수 있는 유일한 P2P 기술입니다. 때문에 각각의 클라이언트들을 연결하는 과정도 남다릅니다. 각각의 기기가 서버 도움 없이 연결되기 위해 이 연결을 도와주는 서버(Signaling)가 필요하고 P2P 연결이 불가능한 상황을 대비한 릴레이 서버(TURN)가 필요합니다.
WebRTC는 UDP(User Datagram Protocol) 기반의 스트리밍 기술입니다. HTTP/3 이전까지는 거의 유일한 UDP 기반의 웹 표준이었죠. P2P와 UDP 기반의 여러 프로토콜 덕택에 WebRTC를 이용한 스트리밍은 현존하는 기술 중 Latency가 가장 짧은 것 중 하나가 되었습니다.
이와 같은 기술적인 특징 덕분에 WebRTC는 다른 어떤 기술보다 빠르게 음성과 영상을 전송할 수 있습니다. 마치 채팅 메시지처럼 음성과 영상을 매우 즉각적인 서비스에 적용할 수 있다는 뜻입니다. WebRTC로 일확천금을 획득한 선구자들은 바로 이러한 점을 무기로 킬러 서비스를 개발해왔습니다.
WebRTC 활용 분야
WebRTC는 기본적으로 P2P 스트리밍 기술에서 출발하였지만, WebRTC 선구자들은 이 P2P의 특징을 확장해서 다양한 응용서비스를 개발해왔습니다. WebRTC를 이용한 서비스는 크게 3가지 방식으로 사용합니다. 첫 번째는 1:1 방식, 두 번째는 방송에 사용되는 1:N 방식, 세 번째는 회의형 방식인 N:N 방식입니다.
① 1:1 방식 서비스
WebRTC가 제공하는 P2P 기능을 기반으로 하는 서비스로, 기존의 VoIP 기술이나 전화 서비스 등을 대체할 수 있습니다. 국가 공인 전화번호만 부여되지 않을 뿐, 품질이나 기능성에서는 WebRTC가 전화보다 뒤떨어질 이유가 없습니다. WebRTC는 이미 우리가 접하는 수많은 통화 앱(카카오톡 보이스톡 등)에서 사용되어 왔습니다. 또한 전화 영어나 심리 및 의료상담 등에서도 WebRTC를 활용하고 있습니다. 특히 하이퍼커넥트의 Azar는 WebRTC를 활용한 1:1 방식 서비스 중 가장 크게 성공한 서비스 중 하나입니다.
② 1:N 방송 서비스
기존 방송 기술의 지연시간은 보통 5~20초로, 3초 아래의 지연시간을 보장하기 어려운데요. WebRTC는 낮은 지연시간을 필요로 하는 생방송 서비스에서 인기를 끌고 있습니다. 특히 라이브 커머스, 라이브 옥션, 라이브 퀴즈, 웨비나, 꿀잼 퀴즈방 방송 등 시청자와 활발한 소통이 필요한 분야에서 필수 기술로 자리 잡고 있습니다.
대량 접속 환경에서 WebRTC의 P2P 성격은 버려지지만, 여전히 생방송에서 요구되는 낮은 지연 시간은 보장됩니다. Hopin과 같은 웨비나 서비스는 WebRTC를 활용한 1:N 방송 서비스 중 가장 크게 성공한 서비스입니다.
③ N:N 회의형 서비스
WebRTC를 이용한 화상회의 서비스는 COVID-19 시대에 신이 내린 선물입니다. 인간은 적절한 시기에 WebRTC를 준비하고 있었고, 이를 기반으로 하는 화상회의 서비스들은 마치 노아의 방주처럼 우리 사이에 놓인 바이러스의 강에 다리 역할을 해주었습니다.
단지 비즈니스나 교육을 위해서만 WebRTC N:N 기술이 사용되지는 않습니다. 클럽하우스 서비스처럼 왁자지껄한 원격 만남이 필요한 분야라면 WebRTC의 N:N 기술은 어디에나 존재할 수 있습니다. 우리는 이미 수많은 N:N 회의형 킬러 서비스들을 알고 있는데, 이들은 모두 WebRTC 기술을 활용하고 있습니다.
④ 2021년 WebRTC 응용 서비스 분야
WebRTC의 존재감은 연초부터 클럽하우스 서비스를 통해서 다시 한번 강력하게 드러났습니다. 클럽하우스는 화상회의 기술이 B2C(Business to Customer) 영역에서도 성공할 수 있음을 보여주는 사례였습니다. 물론 그 이전에도 스푼라디오나 하쿠나라이브와 같이 성공한 B2C 서비스들은 존재했지만 말이죠.
클럽하우스는 기술적으로 흥미로운 부분이 많습니다. N:N과 같은 화상회의형 방식에 1:N의 방송 서비스 형식을 결합했다는 점인데요. WebRTC의 장점인 다수의 스트림을 자유자재로 연결할 수 있다는 점을 잘 활용했습니다. 앞으로 이와 유사한 서비스가 계속 변화를 주면서 출시될 것으로 보입니다.
화상회의 서비스도 여전히 성장하고 있습니다. 2020년이 화상회의의 기본적인 성능 개선(동시접속자 제어, 화질 개선)에 초점을 맞추었다면 2021년에는 메타버스와 AI 같은 다른 기술과의 접목 혹은 Gather Town처럼 차별화된 UX 등으로 시장에 도전하고 있습니다.
한국의 경우 라이브 커머스 시장이 유독 성장하고 있고, 웨비나와 원격 의료 및 상담 분야의 시장도 커지고 있습니다. WebRTC 응용 서비스 시장은 한 가지 킬러 서비스만 존재하지 않습니다. 거의 매해 킬러 서비스가 바뀌어왔는데요. 초창기에는 Azar와 같은 랜덤 화상채팅 서비스가 킬러 서비스였다면 그 이후 비고라이브같은 모바일 개인방송 서비스가 현재까지도 많은 사랑을 받아왔습니다. 코로나 이후로 라이브 커머스와 화상회의 및 웨비나 서비스가 큰 호응을 얻고 있지만 클럽하우스와 같이 언제 새로운 형태의 서비스가 나타날지 알 수 없는 시장이기도 합니다. 그만큼 변화가 빠르고 도전할 영역이 많은 시장입니다.
WebRTC 기술의 어려움
그 어느 때보다도 WebRTC 기술이 절실한 시기이지만 체감적으로 WebRTC 응용 서비스가 많은 편은 아닙니다. WebRTC 기술은 다른 IT 기술에 비해 전문가가 부족하고 기술 자체도 어려워, 관련 기술 문서도 매우 부족한 편입니다. WebRTC로 서비스를 개발하다보면 다음과 같은 어려움을 겪게 됩니다.
① 네트워크 환경에 따른 품질의 불확실성
웹 환경에서 살고 있는 우리는 사실 매우 신뢰도가 높은 프로토콜인 TCP 기반의 서비스를 주로 경험하고 있기 때문에 네트워크가 얼마나 극도로 예민한 녀석인지 잊어버리곤 합니다. WebRTC는 UDP 기반의 RTP 프로토콜을 사용하고 있습니다. 품질을 보정하는 기술이 내장되어 있지만, 네트워크 기술에 대한 이해와 충분한 개발 경험이 없다면 WebRTC 기반의 서비스 개발에 성공했다고 안정적인 품질을 보장할 수 없다는 것을 곧 깨닫게 될 것입니다.
더구나 라이브 스트리밍에서 음성 영상 품질을 정량적으로 측정하는 것은 음식의 맛을 절대적 기준으로 정량화하는 것만큼이나 어려운 일입니다. 어떤 청취자는 소리가 작은 것만으로도 품질이 낮아졌다고 평가하며, 어떤 청취자는 적당한 에코에도 품질이 좋다고 생각합니다.
또한 모빌리티 환경의 품질은 갈수록 중요해지고 있는데 반해 모빌리티 환경에서 네트워크의 불안정성은 상상을 초월하는 복잡한 문제입니다. 문제가 발생해도 재현하기 어렵고 논리적인 코드만으로는 상황을 유추하기 어려운 일이 다반사입니다.
② 고난이도의 미디어처리 영역
1:1 통화 서비스가 아닌 화상회의나 방송 서비스를 개발하려면 다양한 미디어 처리를 위한 서버들이 필요합니다. 또한 경쟁사들과 차별화를 두기 위해서 화면 꾸미기 같은 특수효과가 필요하기도 합니다. 이러한 기술은 WebRTC와는 무관하지만, 상품성 있는 서비스를 위해서는 반드시 갖춰야 하죠. 보통의 WebRTC 기반 라이브 스트리밍 서비스에서 필요로 하는 미디어 처리 흐름은 그림과 같습니다.
'송출'에서 'Origin'에 이르는 부분과 'Edge'에서 '수신'에 이르는 과정만이 WebRTC가 관여하는 부분이고 나머지는 모두 각자의 플랫폼과 각자의 방식으로 구현하거나 감안해야 하는 영역입니다.
WebRTC는 클라이언트에서 미디어에 변화를 많이 주고, 서버의 경우 미디어 전송이나 분배에 더 집중하지만, 서버도 녹화나 기본적인 수준의 미디어 처리는 필요할 때가 많습니다. 이 때문에 조직 내에 미디어를 자유롭게 다룰 수 있는 엔지니어도 필요하고 모바일 플랫폼의 입출력 미디어 장치에 대한 경험을 가진 엔지니어도 필요합니다.
WebRTC를 적극적으로 활용하는 서비스들은 사용자와의 인터랙션을 적극적으로 유도하는 경우가 많습니다. 이를 위해서는 영상만 실시간으로 제공되기보단 필수적으로 실시간 채팅과 같은 메시징 인프라가 제공되어야 합니다. 즉, 채팅이나 화면효과 그리고 사용자의 여러 가지 이벤트 등을 실시간으로 전파하고 공유할 수 있는 서버가 꼭 갖춰져야 합니다.
③ 대용량 처리 및 클라우드
WebRTC 미디어 서버는 WebRTC 기반의 미디어 스트림을 중개 및 분배하는 역할을 하는 서버입니다. WebRTC 기반의 방송과 화상회의형 서비스는 이 미디어 서버가 꼭 필요합니다. Janus나 Pion등과 같이 유명한 오픈소스가 존재하여 비교적 쉽게 데모 수준의 서비스를 구현해볼 수 있습니다.
미디어 서버 덕분에 1:N이나 N:N 방식의 서비스를 구현할 수는 있지만 문제는 서비스 오픈 이후에 있습니다. 즉 대용량 처리를 위한 적절한 아키텍처를 고민해야 합니다. WebRTC 기반 서비스들은 한번 방송에 몇십만 명이 시청하는 서비스보다는 클럽하우스나 아프리카TV처럼 다수의 방송이 독립적으로 존재하고 적게는 2-4명 많게는 몇천 명이 대화하는 서비스가 주를 이룹니다. 따라서 개별 방에 대한 트랜잭션을 미리 예측하거나 대응하기보다는 확장성(Scalability)을 매우 유연하게 제어하고 자동화하는 방식을 고민해야 합니다.
하지만 우리가 많이 쓰고 있는 AWS(Amazon Web Service)나 GCP(Google Cloud Platform) 혹은 카카오 i 클라우드와 같은 클라우드 서비스등을 WebRTC 미디어 서버에 적합하게 아키텍처를 구성하기는 여의치 않습니다. 적지 않은 부분부터 새롭게 고민해야 합니다. 더구나 미디어 서버를 클라우드 서비스에 적합하게 구성한다는 것은 매우 큰 도전과제 중 하나입니다.
WebRTC 응용 서비스 개발 방법
① CPaaS를 활용하기
위와 같은 이유로 인해 클럽하우스를 비롯한 많은 성공 서비스는 WebRTC 기술과 인프라를 전문적으로 제공하는 CPaaS(Communication Platform as a Service)를 활용하고 있습니다. 매우 현명한 방법이라고 생각합니다. WebRTC 응용 서비스에서 성공을 결정하는 핵심은 WebRTC가 아니라 콘텐츠 자체이기 때문입니다. 핵심에 집중하기 위하여 WebRTC 같은 매우 전문화된 기술은 클라우드 기업에 맡기는 것이죠.
해외의 경우 Twilio나 Agora.io가 유명하고 국내의 경우 Kakao i Connect Live가 유일한 CPaaS입니다. 이들 CPaaS를 이용하면 WebRTC 응용 서비스 개발에서 WebRTC와 관련된 거의 모든 부분에서 도움을 받을 수 있습니다. 웹 뿐만 아니라 모바일 플랫폼 지원과 대용량 트랜잭션 제어 그리고 미디어 서버 및 TURN서버 등을 지원받게 됩니다. 이는 WebRTC 개발자 2-3명을 채용하는 것과 동일한 효과가 있습니다.
때문에 클럽하우스 등을 포함하여 많은 WebRTC 응용 서비스는 CPaaS로 빨리 개발하고 나중에 서비스가 성공했을 때 투자 유치 후 기술 내재화 여부를 결정하게 됩니다.
② 직접 WebRTC 서비스 개발에 도전하기
WebRTC 응용 서비스들은 사용자에게 차별화된 경험을 줄 수 있고 일반 서비스보다는 진입하는 데 장벽이 있으므로 욕심 있는 엔지니어라면 한번 도전해 봄직한 분야입니다. 더욱이 WebRTC 덕분에 이전보다 라이브 스트리밍 혹은 통화 서비스를 개발하기가 한결 쉬워지고 저렴해진 것이 사실입니다. 하지만 처음에 쉽게 개발해볼 수 있다고 접근했다가 그 끝을 알 수 없는 깊이에 반 평생을 바치는 경우가 제 주위에는 적지 않습니다. 만약 WebRTC를 제대로 개발 하려면 최소 5년에서 10년 이상은 단단히 공부 할 각오를 해야 합니다. 국내에도 카카오엔터프라이즈를 비롯하여 유수의 기업들이 점점 더 WebRTC의 연구 개발에 뛰어들고 있으며, 앞으로 WebRTC 개발자는 더욱더 많이 필요하게 될 것입니다. 구글 등 외국의 경우에도 WebRTC 개발자는 항상 부족하고 관련 엔지니어 상시 채용 공고가 열려있기도 합니다.
마치며
WebRTC 기반 서비스 시장은 매년 30% 이상 성장하고 있으며 우리는 어쩌면 WebRTC가 혁신할 변화의 시작 부분에 있을지도 모르겠습니다. 세상은 훨씬 더 많은 WebRTC 엔지니어를 필요로 합니다. WebRTC 공부를 처음 시작하려고 하시는 분들을 위해 오늘 포스팅이 조금이나마 도움이 되었으면 좋겠습니다. WebRTC와 관련된 주요 링크도 공유드리니 참고하시면 좋을 것 같습니다. 마지막으로 카카오엔터프라이즈에서도 WebRTC 개발자를 채용하고 있으니 많은 분들의 지원을 기다리겠습니다. 그럼 WebRTC로 이어질 미래를 기대해 보며 글을 마치도록 하겠습니다.
📍 개발자를 위한 주요 링크
✓ https://WebRTC.org - WebRTC 공식 사이트
✓ https://developer.mozilla.org/ko/docs/Web/API/WebRTC_API WebRTC API 모질라 문서
✓ https://webrtc.googlesource.com/src WebRTC 프로젝트 마스터 repo
✓ https://webrtcforthecurious.com/ WebRTC의 이론을 상세하게 공부하기 좋은 문서
✓ https://webrtcweekly.com/ WebRTC 뉴스를 가장 빠르게 접할 수 있는 뉴스레터
✓ https://bloggeek.me/ 가장 유명한 WebRTC 블로거 Tsahi의 블로그
✓ https://www.facebook.com/groups/rtc.korea 한국 WebRTC 커뮤니티
✓ https://connectlive.kakaoi.ai/ 카카오 엔터프라이즈에서 제공하는 CPaaS, Kakao i Connect Live
댓글