Tencent RTC

Tencent RTC란 텐센트클라우드의 실시간 커뮤니케이션 클라우드 서비스로 음성 및 동영상 통화, 라이브 채팅, 라이브 스트리밍, 인터넷 강의, 화상회의, 뷰티필터 등 미디어적으로 구현할 수 있는 거의 모든 기능을 제공하는 상품이다. 이례적으로 독립적인 상품 홈페이지까지 있는 것으로 보아 텐센트클라우드의 베스트셀러로 보이는 이 TRTC의 카테고리와 장점을 공식 홈페이지에서는 아래와 같이 소개하고 있다.

제품 카테고리

- Video and Voice call : 고품질의 비디오 및 음성통화 구현 - Chat : API를 활용한 실시간 채팅 서비스 (이 상품의 Demo 가이드의 경우 다른 글에서 이미 소개한 적이 있다.)

- RTC Engine : RTC SDK를 활용한 통화 및 인터랙티브 라이브 스트리밍 구현 - Conference SDK : Zoom과 같은 화상회의 시스템 기능 구현 - Beauty AR : 뷰티필터 기능으로 실시간 이미지 및 비디오 뷰티파이징 구현

제품 특징

높은 품질과 가용성을 갖춘 실시간 인터랙션 서비스 높은 안정성 및 가용성 SLA에 의해 보장되는 99.9% 이상의 서비스 가용성으로 수천만 건의 동시 요청을 지원합니다. 매우 탄력적이고 확장 가능한 네트워크 아키텍처는 수만 명의 엔터프라이즈 사용자에 의해 검증되었습니다.

멀티미디어 품질 보증 전 세계 평균 300ms 미만의 엔드 투 엔드 딜레이로 열악한 네트워크 상황에 대처하는 스마트 알고리즘을 기반으로 패킷 손실률 80%에서음성 통화, 패킷 손실률 70%에서 영상 통화가 가능합니다.

높은 호환성 iOS, Android, Windows, macOS, Web, Flutter, Electron, Unity, Unreal, RN 등 플랫폼을 지원하며 20,000개 이상의 디바이스 모델에 완벽하게 적용할 수 있습니다.

최적화된 글로벌 배포 전 세계 200개 이상의 국가 및 지역에서 사용할 수 있으며 특히 동남아시아, 중동 및 북미의 네트워크에 최적화되어 있습니다. 쉽고 빠른 연결 음성/영상 통화, 음성/화상 회의, 인터랙티브 비디오 라이브 스트리밍을 위한 오픈 소스 UIKits와 전체 플랫폼용 코드 샘플을 통해 개발 프로세스를 단순화합니다.

기업 지원 프로그램 업계 최고의 기술 팀이 7*24시간 연결 서비스와 운영 지원을 제공합니다.

RTC Engine

제품에 대한 소개는 위의 내용과 상품 공식 홈페이지를 참조하면 자세한 설명을 볼 수 있고, 나는 여러 기능 중 하나인 RTC Engine을 이용하여 데모 서비스를 구성해보려고 한다. RTC Engine은 RTC의 기능을 간단하게 구현할 수 있는 클라이언트SDK와 클라우드 기반 API를 제공해주는 툴킷으로 Web, 안드로이드, iOS, Window, MacOS를 비롯한 다양한 OS를 지원한다. 이 글에서는 RTC Engine을 통해 javascript로 Web에서 간단한 기능을 구현하여 체험해본다.

우선 TRTC 콘솔에 접속 후 새로 애플리케이션을 생성한다.

Select product 에서 RTC Engine을 선택한다.

생성이 완료되면 발급된 SDKAppID와 SDKSecretKey를 기록해 놓는다.

이제 RTC 깃허브에 올라온 Web 코드를 클론한다.

git clone https://github.com/Tencent-RTC/TRTC_Web.git

코드 클론이 끝나면 설치폴더 하위 TRTC_Web/quick-demo-js 폴더의 index.html 파일을 찾아 실행한다.

파일 실행 시 이렇게 로컬 브라우저에서 Demo 페이지가 뜬다. SDKAppID 와 SDKSecretKey 필드에 발급받은 값들을 넣고 아래 Operation 항목들을 클릭하면 채팅방 입장&퇴장, 음성, 비디오 화면공유 등의 기능을 바로 즉석에서 체험할 수 있다.

프로덕션 환경에서의 TRTC

Demo체험 후 정식버전을 구매하면 구매한 플랜에 맞는 범위의 SDK와 API를 사용하여 실제 서비스 환경을 구축할 수 있다. 예시코드와 API 명세는 공식 문서를 참조하여 구현이 가능하다.

다만 Demo 환경과 실제 프로덕션 환경의 가장 큰 차이점 중 하나는 보안 설계이다. 채팅 및 화상회의 서비스의 특성상 보안 설계가 충분하지 않을 경우, SecretKey 탈취나 크래킹 등을 통해 음성 및 미디어 데이터가 외부에 노출될 가능성이 있기 때문이다. Demo에서는 AppID와 SecretKey를 직접 입력값으로 사용하는 방식으로 테스트를 진행했지만, 실제 프로덕션 환경에서는 이러한 방식은 권장되지 않는다.

이를 위해 텐센트클라우드는 UserSig라는 자체 보안 서명 메커니즘을 제공한다. UserSig는 SDKAppID, UserID, 만료 시간 등의 정보를 조합한 뒤 HMAC-SHA256 알고리즘 기반으로 생성되는 보안 서명이다.

텐센트클라우드는 UserSig 생성 공식을 직접 제공하고 있지만, 이를 클라이언트 측 코드에 하드코딩하는 것은 바람직하지 않다. 일반적으로는 서버 측에서 UserSig 생성 연산을 수행한 뒤, 클라이언트가 로그인 또는 회의 입장 과정에서 서버에 요청하여 UserSig를 발급받고 이를 SDK에 전달하는 방식으로 구현한다.

RTC 계열 SDK를 활용한 화상회의 서비스에서는, 사용자가 회의 입장을 요청할 때 사용자 식별 초기화 이전 단계에서 UserSig를 전달받는 과정이 필요하며, 전체 흐름은 아래 그림과 같다.

공식문서에서 제공하는 코드로 서버에 UserSig 연산 로직을 짜놓고 매 번 사용자 식별자를 보내 서버에서 UserSig 생성 후 SDK에서 다시 텐센트클라우드 서버로 보내 해당 값의 유효성을 검증 받는 과정이다. 이를 통해 한층 강화된 보안성을 보장받을 수 있다.

마치며

CHAT에 이어 이 글에서는 Tencent RTC의 기능을 좀 더 살펴보았다. 사실 기업에서 실시간 리얼 커뮤니케이션 서비스를 개발하는 것은 정말 수고스러운 일이다. 그러나 TRTC가 제공하는 SDK와 API를 사용하면 서비스의 구조를 눈으로 바로 파악할 수 있고, 비용 효율적으로 서비스를 신속하게 런칭할 수 있다.

이 제품의 소개 홈페이지를 보면 “A Few Lines of Code, Say Goodbye to Busy Work”라는 문구가 있는데, 이 말 처럼 TRTC는 개발자에게 개발 부담을 덜어주고, 비즈니스 측면에서는 아이디어를 빠르게 제품으로 구현할 수 있게 해주는 좋은 툴이기 때문에 관련된 솔루션을 찾고 있다면 먼저 데모 부터 한 번 써보는 것도 좋을 것 같다. 데모는 공짜다..!

참고자료

https://github.com/Tencent-RTC/TRTC_Web https://trtc.io/document/35607?platform=web&product=rtcengine&menulabel=web

https://www.tencentcloud.com/products/trtc?lang=en&pg=