호스팅 및 네트워킹 가이드

픽셀 스트리밍 시스템의 호스팅을 위한 고급 네트워킹 구성 및 다른 고려사항입니다.

Windows
MacOS
Linux

웹 서비스를 개발하거나 배포한 경험이 없어도 개요시작하기 문서의 설명에 따라 간단한 근거리 통신망 환경에서 작동되도록 픽셀 스트리밍 시스템을 구성할 수 있을 것입니다. 하지만 보다 복잡한 네트워크 또는 열린 인터넷을 통해 서비스를 배포하거나, 사용자 경험과 연결 흐름 디자인을 다시 하려면 설정을 재고해야 할 수 있습니다.

여기서는 다른 목표를 달성하기 위해 픽셀 스트리밍 아키텍처의 구성 요소를 구성하는 법에 대한 예제를 몇 가지 제공합니다.

STUN 및 TURN 서버

시그널링 및 웹 서버가 WebRTC 프록시 서버 및 브라우저 사이 직접 연결을 협상할 수 있으려면, 각 당사자가 자신의 IP 주소를 상대편에 보내야 합니다. 브라우저는 WebRTC 프록시 브라우저가 보낸 IP 주소에 액세스하거나, 그 반대도 가능해야 합니다.

간단한 근거리 통신망 내에서 각 종점은 대개 자신의 네트워크 카드에 알려진 사설 IP 주소를 사용하여 상대방이 액세스할 수 있다고 가정합니다. 열린 인터넷이나, 서브넷이 달라지거나, 브라우저와 WebRTC 프록시 서버 사이 네트워크 주소 변환(NAT) 서비스가 개입될 때는 보통 그렇지 않습니다. 대신 각 당사자는 STUN (Session Traversal Utilities for NAT, NAT 용 세션 탐색 유틸리티) 프로토콜을 구현하는 서버에 쿼리하여 공개적으로 보이는 자체 IP 주소를 찾아야 합니다. STUN 서버가 각 종점에 공개적으로 보이는 IP 주소를 알린 이후, 시그널링 및 웹 서버는 직접 연결을 계속 중계할 수 있습니다.

픽셀 스트리밍과 STUN 및 TURN 서버

또는 TURN 서버를 사용하여 WebRTC 프록시 서버와 브라우저 사이 미디어 스트림을 중계할 수 있습니다. TURN 프로토콜을 사용하면 TURN 서버가 WebRTC 프록시 서버에 연결되는 한 편 브라우저로도 연결됩니다. WebRTC 프록시 서버가 모든 스트림 데이터를 전송하는 TURN 서버는 그 데이터를 브라우저에 다시 전송합니다. 이 경우 WebRTC 프록시 서버와 브라우저 사이에는 직접 연결이 없습니다. (무선 통신 사업자 네트워크의 모바일 디바이스를 지원하려면, TURN 서버를 사용할 수밖에 없습니다. 모바일 네트워크는 종종 클라이언트가 WebRTC 프로토콜을 통해 성공적으로 연결하는 것을 방지합니다.)

한 서버에서 다른 서버로 예비 전환하는 기능과 함께 STUN 및 TURN 프로토콜 모두 ICE (Interactive Connectivity Establishment, 인터넷 연결 수립) 프레임워크를 이룹니다.

인터넷에서 STUN 및 TURN 서버의 소픈 소스 구현 을 다수 찾을 수 있습니다. 직접 호스팅하는 대신 무료로 사용할 수 있는 공용 STUN 서버 도 있습니다만, 직접 호스팅하지 않는 서비스를 사용할 때는 주의를 기울여야 합니다. (TURN 프로토콜을 통해 미디어를 중계하는 데 드는 처리량과 대역폭 때문에 공용 TURN 서비스는 무료가 드뭅니다.)

편의를 위해 언리얼 엔진 출시 버전에는 C++ WebRTC SDK 로 정의된 STUN 및 TURN 레퍼런스 서버 바이너리 버전도 포함되어 있습니다. 언리얼 엔진 설치 위치 아래 Engine/Source/ThirdParty/WebRTC/rev.23789/programs/Win64/VS2017/release 폴더에서 찾을 수 있습니다. 이 구현의 안정성이 실제 제작 단계에 사용할 수준은 못되지만, 시작하는 데 도움이 될 수는 있습니다.

ICE 연결을 사용하도록 픽셀 스트리밍을 설정하려면, 사용하려는 STUN 및 TURN 서버의 호스트 이름을 시그널링 및 웹 서버에 대한 peerConnectionOptions 구성 파라미터에 설정해야 합니다. 이 파라미터의 형식을 지정하는 법, 제공하는 법 관련 자세한 내용은 픽셀 스트리밍 레퍼런스 문서를 참조하세요.

추가로 자체 STUN 또는 TURN 서버를 호스팅하는 경우, peerConnectionOptions 파라미터에 지정한 IP 주소와 포트가 열린 인터넷에 보이는지 확인해야 합니다.

멀티 플레이어 종점

모든 사용자가 같은 언리얼 엔진 세션에 있어도 그 세션 제어 능력은 똑같지 않도록 하고싶을 수도 있습니다.

예를 들어 발표자가 브라우저에서 언리얼 엔진을 완벽 제어하지만 다른 사용자는 스트림을 볼 수만 있도록 하는 프레젠테이션같은 경험을 만들 수 있습니다. 또는 사용자마다 다른 커스텀 컨트롤 세트를 만들어 협업을 통해 실시간으로 다양한 부분을 제어하는 경험을 만들 수도 있습니다.

이러한 상황에서는 하나의 웹 서비스 스택으로 하나의 언리얼 엔진 인스턴스를 실행하고, 시그널링 및 웹 서버에서는 다른 플레이어 HTML 페이지를 만들면 됩니다.

멀티 플레이어 페이지

이 상황에서는 각기 다른 HTML 플레이어 페이지와 그 JavaScript 환경을 커스터마이징하여 원하는 컨트롤만 노출시킬 수 있습니다. 그런 사용자 각 클래스는 시그널링 및 웹 서버에서 다른 URL 을 요청하면 됩니다. 예를 들어 발표자는 http://yourhostname/presenter.html 을 로드하고, 다른 사용자는 http://yourhostname/attendee.html 을 로드합니다.

플레이어 페이지 커스터마이징 관련 자세한 내용은 플레이어 웹 페이지 커스터마이징 문서를 참조하세요.

매치메이킹 포함 다중 풀 스택

모든 사용자가 같은 스트림에 연결하는 대신, 사용자마다 별도의 대화식 환경을 만들 수도 있습니다. 그러기 위해서는 사용자마다 별도의 픽셀 스트리밍 구성 요소 스택을 실행하고, 각 사용자를 별도의 시그널링 및 웹 서버로 돌려 연결을 시작하면 됩니다.

픽셀 스트리밍 구성 요소 각 스택을 별도의 호스트에 설정할 수도 있고, 각 스택 내 컴포넌트의 포트 세팅을 모두 다른 포트로 통신하도록 구성한다면 같은 호스트에 다수의 스택을 넣을 수도 있습니다. 이 포트 세팅 관련 자세한 내용은 픽셀 스트리밍 레퍼런스 문서를 참고하세요.

같은 컴퓨터에서 픽셀 스트리밍을 사용하여 언리얼 엔진 인스턴스를 다수 실행하려는 경우, NVIDIA GeForce 라인같은 소비자 수준 그래픽 카드 다수는 동시에 최대 2 개의 인코더만 실행할 수 있습니다. Quadro 및 Tesla 같은 전문가 수준 카드는 제약이 같지 않습니다.

이런 종류의 구성 설정을 돕기 위해 픽셀 스트리밍 시스템은 어떤 시그널링 및 웹 서버를 사용할 수 있는지, 클라리언트 연결에 사용되고 있는지를 추적하는 매치메이커 서버를 사용할 수 있습니다.

매치메이커 서버 포함 다중 풀 스택

각 클라이언트마다 자체 시그널링 및 웹 서버 URL 에 연결해야 하는 대신, 먼저 매치메이커 서버에 연결합니다. 매치메이커 서버가 요청자 각각을 자체 시그널링 및 웹 서버로의 리디렉션을 처리하면, 거기서 클라이언트와 그 WebRTC 프록시 서버 사이 피어 투 피어 연결을 설정합니다. 그 연결이 활성 상태인 한, 매치메이커 서버는 새로 접속된 브라우저 연결을 같은 시그널링 및 웹 서버로 리디렉션하지는 않습니다.

픽셀 스트리밍 시스템에 매치메이커 서버의 기준 구현이 포함되어 있으며, 위치는 Engine/Source/Programs/PixelStreaming/WebServers/Matchmaker 폴더입니다. 이 서버는 그대로 사용하거나, 시그널링 및 웹 서버에서 같은 메시지를 처리하는 한 matchmaker.js 파일을 필요에 맞게 고쳐 써도 됩니다.

매치메이커 서버를 설정하는 방법입니다.

  1. 시그널링 및 웹 서버를 시작하기 전, 매치메이커 서버의 run.bat 파일을 실행하여 시작합니다. 기본적으로 서버는 90 번 포트에서 클라이언트의 HTTP 연결을 수신 대기하고, 9999 번 포트에서 시그널링 및 웹 서버의 연결을 수신 대기합니다. 이 설정은 명령줄에서 다음과 같은 구성 파라미터를 제공하여 덮어쓸 수 있습니다.

    파라미터

    설명

    --httpPort

    매치메이커 서버가 브라우저에서 들어오는 HTTP 연결을 수신 대기하는 포트를 정의합니다.

    --matchmakerPort

    매치메이커 서버가 시그널링 및 웹 서버에서 들어오는 상태 메시지를 수신 대기하는 포트를 정의합니다.

    예:

    > run.bat --httpPort 88 --matchmakerPort 9988

  2. 시그널링 및 웹 서버에 대해 다음과 같은 구성 파라미터를 설정합니다.

    파라미터

    설명

    UseMatchmaker

    이 파라미터를 true 로 설정하면 시그널링 웹 서버가 현재 상태를 매치메이커 서버에 전송하게 만듭니다.

    matchmakerAddress

    이 시그널링 및 웹 서버가 연결할 매치메이커 서버의 IP 주소입니다.

    matchmakerPort

    시그널링 및 웹 서버가 매치메이커 서버에 메시지를 전송해야 할 때 사용할 포트입니다. 이 값이 매치메이커 서버에 설정한 --matchmakerPort 값에 일치하는지 확인하세요.

    publicIp

    시그널링 및 웹 서버의 공개적으로 보이는 IP 주소입니다. 매치메이커 서버가 사용자를 이 시그널링 및 웹 서버로 리디렉션할 때, 이 IP 주소로 보냅니다. 그러므로 연결 브라우저에 보여야 합니다.

    httpPort

    시그널링 및 웹 서버가 HTTP 연결을 수신 대기하는 포트입니다. 매치메이커 서버가 사용자를 이 시그널링 및 웹 서버로 리디렉션할 때, 이 포트로 보냅니다.

    이 파라미터 설정 방법에 대한 안내는 픽셀 스트리밍 레퍼런스 문서를 참조하세요.

주문형 스케일

위 설명처럼 별도의 풀 스택이 들어오는 각 클라이언트 연결을 처리하는 전략을 사용하려는 경우, 실행할 언리얼 엔진 응용 프로그램 수를 미리 정해두고 싶지 않을 것입니다. 사용자 수가 서버 수보다 적을 경우 자원이 낭비되며, 반대로 많으면 사용자가 연결이 가능할 때까지 기다려야 할 수 있습니다. 그 대신 클라이언트가 연결을 시도할 때마다 새 서버 인스턴스를 시작하면 좋습니다.

픽셀 스트리밍 시스템의 구성 요소와 옵션으로 매치메이커 서버를 사용하면, 이런 동적인 스케일의 호스팅 시스템을 설정하는 데 필요한 모든 조각이 이미 갖춰진 셈입니다. 하지만 현재 이런 수준의 클라우드 배포는 자체 설정하는 클라우드 서비스 공급자에 따라 달라집니다.

호스트 머신 하드웨어 용량

언리얼 엔진 응용 프로그램과 픽셀 스트리밍 웹 서비스를 호스팅할 Amazon (AWS) 또는 Microsoft Azure 같은 서비스 공급자를 선택한 경우, 다양한 하드웨어 용량의 여러 호스트 등급 중에서 선택할 수 있습니다. 호스트의 용량이 제공할 수 있는 스트리밍의 퀄리티에 영향을 줄 수 있다는 점에 유의하세요.

예를 들어 AWS 머신은 보통 하드웨어 사운드 카드를 제공하지 않습니다. 그런 호스트에서 언리얼 엔진 응용 프로그램을 실행하면, 미디어 스트림에 사운드가 포함되지 않습니다. 마찬가지로 GPU 성능이 떨어지거나 메모리가 적은 호스트를 선택한 경우, 스트림에 최대한의 비디오 퀄리티를 내지 못할 수 있습니다.

Select Skin
Light
Dark

새로운 언리얼 엔진 4 문서 사이트에 오신 것을 환영합니다!

문서 사이트에 대한 의견을 모을 수 있는 피드백 시스템을 포함해서 여러가지 새로운 기능을 준비하고 있습니다. 아래 Documentation Feedback 포럼(영문) 또는 언리얼 엔진 네이버 공식 카페(한글) 중 편하신 곳에 의견이나 문제점을 알려 주세요.

새 시스템이 준비되면 알려 드리겠습니다.

네이버 카페
공식 포럼