실시간 커뮤니케이션 서비스를 위한 WebRTC Copyright 2022. Kakao Corp. All rights reserved. Redistribution or public display is not permitted without written permission from Kakao. 김시은 eddy.games 카카오게임즈 if(kakao)2022 WebRTC 기반 게임 리모트 플레이
MMORPG, 자동 사냥 MMORPG는 다수의 게임 사용자가 온라인 공간에서 즐길 수 있는 롤플레잉 게임입니다. MMORPG 에서 는 게임 속 캐릭터의 레벨과 능력치가 중요해서, 게임 사용자는 캐릭터를 키우기 위해서 많은 시간과 노력 이 필요합니다. 자동 사냥은 온라인 게임 공간의 내 캐릭터가 자동으 로 몬스터를 사냥하며 레벨과 경험치를 쌓게 하는 시 스템입니다. 자동 사냥을 활용하면 시간 없는 직장인 입장에서는 짧은 시간에 내 캐릭터를 성장시킬 수 있 습니다. MMORPG 자동 사냥
원격 데스크톱 - 집에 실행중인 PC 게임에 원격 접속해서 게임 플레이 - 잠깐 접속해서 게임 상태를 확인하는 용도로는 적합하지만 게임 플레이 불편함 - 원격 데스크톱의 대안으로 리모트 플레이 서비스를 검토하게 됨 집에 실행중인 PC 게임 다른 PC 에서 원격으로 내PC에 접속 원격 데스크톱
WebRTC 유스케이스 코로나 팬데믹으로 인한 사회적 거리두기 영향으로 비대면 기반의 온라인 서비스를 많이 사용하게 되었습니다. 재택 근무로 인한 온라인 화상 회의 비중이 늘어났으며, 오디오 기반 소셜서비스가 폭발적인 인기를 얻게 되었습니다. 이 와 같은 실시간 커뮤니케이션 서비스를 위한 기술이 바로 WebRTC 이며 메타버스, 게임 스트리밍, 헬스케어 등 다 양한 업계에서 WebRTC 는 활용되고 있습니다.
Signaling Server Web Server PC Game Client Remote Device NAT 1. Direct NAT Stun Server 3. Turn Relay Stun Server 2. Server Reflexive Turn Server WebRTC 백엔드 아키텍처
Signaling Server Stun/Turn Server WebRTC는 실시간으로 영상, 음성 데이터를 통신하는 기술입니다. 서로 다른 네트워크에 있는 클라이언트가 상대방의 IP, 미디어 유형, 코덱 등 초기화하는 과정을 시 그널링이라 부르며, 이를 지원하는 서버가 시그널링 서 버 입니다. NAT 는 퍼블릭망과 내부망의 IP와 Port 를 매핑해주 는 역할을 하는데, Stun 서버는 클라이언트가 NAT 환 경에 있는 경우 Public 종단에서 접근 가능한 IP 와 Port 를 판단해서 알려주는 역할을 합니다. 하지만, Stun 서버를 사용해도 P2P 통신이 어려운 경 우가 있는데, 이때는 Turn 서버를 구축해서 미디어 데 이터를 대신 전달해줘야 합니다. Turn 서버는 퍼블릭 환경에서 접근 가능하며 미디어 데이터를 대신 전달하 기 때문에 서버 리소스가 소모됩니다. WebRTC 백엔드 아키텍처
Stun(Session Traversal Utilities for NAT) Stun NAT PC Game Client Signaling Server NAT PC Game Client Signaling Server 1 2 Stun 에 의한 P2P 통신 NAT에 의한 Direct 통신 불가 Remote Device Remote Device
NAT PC Game Client Signaling Server NAT PC Game Client Signaling Server Stun Stun Turn Turn(Traversal Using Relays around NAT) Stun을 사용해도 통신 불가 Turn 에 의한 릴레이 통신 Remote Device Remote Device
Signaling Server Web Server PC Game Client NAT 1. Direct NAT Stun Server 3. Turn Relay Stun Server 2. Server Reflexive Turn Server WebRTC 백엔드 아키텍처 Remote Device
세션 요약 - 게임 사용자의 플레이 환경 개선을 위한 WebRTC 기반 게임 리모트 플레이 개발 - 리모트 플레이는 플러그인 설치 없이 저사양 모바일에서도 원격으로 게임 플레이 가능 - 백엔드 시스템의 핵심 모듈은 시그널링 서버, Stun/Turn 서버 - 상대방의 IP 주소, 미디어 정보 등 사전 협의를 위한 웹소켓 기반 시그널링 서버 구축 - 3가지 통신 방법 (직접 P2P 통신, Stun 에 의한 P2P 통신, Turn 에 의한 릴레이 통신) - 백엔드 파트에서의 고민 (시그널링 서버 역할, WebRTC 보안, 미디어 서버 등)
WebRTC 처음 접하는 개발자 분들에게 - 1:1 온라인 화상 회의 서비스 개발 - 백엔드 파트 : 시그널링 서버, 웹소켓 기술 이해, Turn Server, UDP - 프론트엔드 파트 : WebRTC JavaScript API 이해 (getUserMedia, RTCPeerConnection, RTCDataChannel) - PeerConnection, DataChannel 에 대한 이해 - 같은 네트워크 대역의 로컬 환경에서는 Turn Sever 없이 통신 가능