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 항목들을 클릭하면 채팅방 입장&퇴장, 음성, 비디오 화면공유 등의 기능을 바로 즉석에서 체험할 수 있다.

무방비 상태에서 기능버튼을 눌렀다간 준비 안 된 오후 3시의 본인 얼굴을 갑작스럽게 마주할 수 있으니 주의한다.
프로덕션 환경에서의 TRTC
Demo체험 후 정식버전을 구매하면 구매한 플랜에 맞는 범위의 SDK와 API를 사용하여 실제 서비스 환경을 구축할 수 있다. 예시코드와 API 명세는 공식 문서를 참조하여 구현이 가능하다. Demo에서와 다르게 고려해야할 점이 보안이다. 보안 부분에 대한 설계가 확실하지 않다면 채팅 및 회의 특성상 SecretKey 탈취나 크래킹을 통해 음성 및 미디어 정보가 노출될 수 있기 때문이다.
Demo에서는 AppID와 SecretKey를 직접 입력 값으로 넣었지만 실제 프로덕션 환경에서는 좋지 않은 방법이 될 수 있다. 텐센트클라우드는 여기서 UserSig라는 자체 보안 서명을 제공하는데 UserSig는 SDKAppID, userid 및 현재시간 만료시 간 등을 산술 합하여 HMAC SHA526 알고리즘을 통해 암호화 되는 보안서명이다.
자체 계산 공식을 제공하지만 클라이언트 측에서 하드코딩하는 것은 바람직 하지 않고 서버 측에 이에 대한 연산을 맡기고 매 번 서버에 요청하여 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=