2019년 WebRTC 개발 이야기

리모트몬스터

리모트몬스터는 WebRTC를 이용한 통화, 방송, 다자간통화 등의 개발자 SDK를 제공하는 클라우드 서비스이다보니 정말 다양한 라이브서비스들의 요구사항을 모두 만족해야한다. 전체 트래픽의 50%이상이 해외에서 발생하고, 동접 몇천명의 방송부터 3-4명밖에 시청자가 없는 그룹통화까지 다양하다. 더구나 웹, 안드로이드, iOS등도 지원하다보니 하루하루 끊임없는 기술 이슈와의 싸움으로 정신이 없다.

2019년도 여전히 WebRTC로 정신없는 한해를 보냈기에 올 한해를 돌이켜보면서 떠오른 여러가지 기술 이야기를 정리해본다.

통화 품질 이야기

통화는 WebRTC의 가장 기본이 되는 기능이고 가장 쉽게 구현할 수 있기에 흔히들 그 품질에 대해 무시하는 경향이 있다. 하지만 방송이나 다자간 통화와 달리 통화는 오로지 P2P로만 동작해야하기 때문에 품질을 관리하기가 매우 까다로운 기능이기도 하다.

통화에서의 품질이란 여러가지를 포함한다. 흔히 음성의 품질, 영상의 품질도 물론 중요한 품질요소이고 이런 품질 요소를 잘 관리하는 것도 어려운 일이지만 통화 성공율 또한 매우 중요한 품질요소이다.

방송의 경우 송출자와 시청자가 보통 같은 나라에서 이루어지는 경우가 많은 반면 통화는 꽤 많은 시나리오가 국가간에 이루어지다보니 이 품질이 더욱 더 중요한 요소가 된다. 또한 리모트몬스터의 고객사 서비스는 방송에 비하여 통화를 유료서비스에 한하여 제공하는 경우가 많기에 이 품질은 정말 정말 중요하다.

어떻게 통화 품질을 올릴 수 있을까? 결국 P2P의 아키텍처 상에서 품질을 올릴 수 있는 방법은 미디어엔진과 네트워크 최적화말고는 답이 없다. 그리고 충분한 데이터에 기반한 꾸준한 분석. 마지막으로 수많은 경험들.

웹기반 영상 송출의 미래

리모트몬스터의 고객사들은 적지 않은 사례에서 영상 송출을 스마트폰의 카메라를 이용하고 있다. 하지만 여전히 스튜디오 환경이나 좋은 방송 장비를 통해서도 영상을 송출하고 있다.

예전? 혹은 지금도 여전히 OBS나 전문 방송 송출 프로그램등을 이용하여 방송 송출을 하고 있지만 최근들어 웹에서 이러한 작업을 할 수 있는 기반이 마련되고 있다. 웹은 기초적인 수준에서 충분히 실시간 영상 송출과 편집을 할 수 있는 기능을 제공한다. Web Audio, Canvas, WebGL등을 이용하면 지금도 꽤 괜찮은 영상 믹싱 및 송출을 할 수 있다.

웹기반 영상 송출이 보다 본격화되는 시기가 올 것이다. 어쩌면 2020년일지도 모른다.

부족한 모바일 브라우저의 WebRTC지원

모바일 브라우저에서 WebRTC를 지원하게 된 것은 반가운 소식이다. 하지만 아직은 완전하지 않다. 각 브라우저가 지원하는 코덱이 조금씩 다르고 그냥 일반 브라우저이냐 아니면 WebView냐에 따라서도 개발 방법과 지원 정도가 다르다. Simulcast 지원도 제약사항이 있다.

더구나 브라우저 버전에 따라서도 지원하는 WebRTC 옵션들이 조금씩 다르다보니 미묘한 품질 차이를 내는 경우도 허다하다.

때문에 리모트몬스터 고객사에게는 되도록 Android, iOS native SDK를 권장하지만 개발자원이 한정적인 고객사 입장에서는 WebView를 사용하는 경우가 적지 않다.

백엔드 아키텍처 개선이냐 혹은 재개발이냐

리모트몬스터의 백엔드는 다양한 비즈니스 시나리오와 다수의 고객사들의 트래픽, 글로벌한 요청을 처리할 수 있도록 아키텍처를 설계해왔지만 미래는 항상 예측할 수 없다. 상상하지 못하였던 요구사항 앞에서 백엔드는 자꾸 복잡해지고 다수의 Region들이 생기고 특정 고객사만을 위한 Dedicated 서버군들이 생겨났다.

올 한해 백엔드의 자동화와 장애 감지 능력 향상 및 복구 능력 개선등에 많은 노력을 기울였지만 여전히 앞으로 올해에 비하여 2배 이상 증가할 내년의 트래픽과 비즈니스 시나리오를 만족하려면 백엔드 재개발이 필요하다는 의견일치를 보였다.(GoLang으로 재개발해보고 싶다는 의지도 많은 듯. ^^)

지금보다 더 자동화되어야하고 더 품질을 잘 측정할 수 있으며 Scalability가 보장되어야 하고 더 범용성을 가져야하며 더 독립적이어야 한다. 그리고 WebRTC를 넘어 미디어 스트리밍 전체를 포괄할 수 있는 아키텍처여야 한다.

리모트몬스터의 고객사에 비하여 턱없이 부족한 백엔드 인력이기 때문에 자동화에 목숨을 걸 수 밖에.

로그 거버넌스의 중요성

국내 대기업에서 직접 서비스하는 WebRTC기반의 서비스를 우연찮게 컨설팅을 할 때가 있었다. 품질 문제가 심각한데 대체 어디서 이 품질 문제를 해결해야할 지 전혀 감을 잡지 못하고 있었다. 나야 WebRTC 문제 해결이라면 이골이 난 사람인지라 작정하고 뛰어들면 많은 문제들을 해결할 수야 있었겠지만 해당 기업의 진짜 문제는 WebRTC와 아우르는 여러 이벤트들을 체계적으로 로깅하는 시스템이 갖춰져있지 않은 것이었다.

WebRTC가 처리하는 데이터는 스트리밍이기에 일반적으로 TCP에 의해서 전달되는 데이터와는 다른 꼼꼼한 로그체계가 요구된다. 다른 말로 로그 거버넌스라고 나는 부르고 있는데, 이 로그 거버넌스야 말로 품질 확보의 가장 기본적인 일이다.

물론 리모트몬스터도 여전히 부족한 점이 있다. 올해 가장 아쉬웠던 부분도 이 로그 체계의 정리였다. 내년초부터 가장 집중적으로 추진해야할 영역이기도.

WebRTC기반 방송기술의 한계

WebRTC기반 방송은 확실히 다른 방송기술에 비하여 latency가 압도적으로 빠르다. 분명 획기적이다. 이 덕택에 Interactive 방송이라는 서비스 분야가 가능해졌다. 앞으로도 이 latency를 무기로 다양한 서비스가 태어날 것이다. 하지만 latency가 중요하지 않은 방송 영역에서도 WebRTC가 필요할까? 꼭 그렇지 않다. 오히려 HLS기반의 여러 방송 기술이 비용도 저렴하고 품질도 안정적이고 개발도 더 쉽다.

올해 깨달은 것은 100명 동접자 이상의 방송에서는 Interactive함이 별로 중요하지 않다는 것이다. 100명 이상의 동접의 방송에서는 하이브리드하게 HLS와의 연계나 RTMP를 통한 기존 CDN과의 연계가 더 현실적일수 있다. 비즈니스적으로 그렇다는 것이다. 기술적으로도 대량 동접에서 WebRTC가 HLS등에 비하여 우월할 이유는 없다.

다자간 통화 기술

올해 하반기부터 갑자기 다자간 통화 유형의 서비스 문의가 많이 들어왔다. 그런데 모바일 환경에서 SFU를 이용한 다자간 통화 기능 구현과 운영이 결코 쉬운 일이 아니다. 일단 자원도 많이 쳐묵쳐묵하고 예외상황을 처리할 요소도 많고 각종 카메라 효과나 오디오 처리등도 할 것이 많다.

예상치 못하게 이러한 요구사항이 너무 많이 들어와서 감당이 안될 지경이었는데 내년부터는 이러한 요구사항을 잘 해결할 수 있도록 노력해야겠다.

WebRTC 엔지니어가 필요함

리모트몬스터는 정말 WebRTC로 할 수 있는 거의 모든 개발과 운영 경험을 다 할 수 있다. Web부터 시작하여 안드로이드, iOS 등 거의 모든 클라이언트 개발 플랫폼 및 프레임워크를 상대하고 있으며, 백엔드에서도 일반적인 서버 아키텍처부터 미디어 서버 아키텍처 그리고 그들의 데이터 분석과 자동화 개발. 더욱이 미디어 서버나 실제 미디어 믹싱과 관련된 하드코어(?)적인 개발 영역까지 커버하고 있다. 이 모든 것을 고작 7명의 엔지니어가 정신없이 수행해나가고 있다.

일반적인 개발 지식도 공부할 게 많은데, 리모트몬스터는 거기에 더해 WebRTC도 공부를 해야한다. 정말 자신의 성장을 위해 더 없이 좋은 스타트업 아닌가?

자, 이제 당신의 지원이 필요하옵니다. 어서 오세요.

recruit@remotemonster.com 이옵니다. 혹은 채용링크!! 굽굽

기업문화 엿볼 때, 더팀스

로그인

/