편집기 내 디버깅 원격 분석 참조 아키텍처
이 참조 아키텍처는 개발 단계 및 적은 수의 사용자를 중심으로 게임 플레이 세션에서 데이터를 수집하고 게임 엔진(이 경우 Unreal Engine 4 또는 Unity Engine) 내에 직접 표시합니다. 가장 빠른 응답 시간을 제공하여 개발 및 QA 팀이 테스트 세션의 결과를 받기 위해 기다릴 필요가 없습니다.
이 문서에서는 GitHub의 이 샘플에 사용된 아키텍처에 대해 설명합니다. 이 참조 아키텍처의 코드는 지침을 위한 예제일 뿐이며 프로덕션 환경에서 사용하기 위해서는 일부 코드를 최적화해야 할 수 있습니다.
아키텍처 다이어그램
관련 서비스
- Azure 이벤트 허브 - 분석 파이프라인에 맞게 조정된 서비스로서, 구성 또는 관리 오버 헤드가 거의 없이 간단하게 사용할 수 있기 때문에 선택했습니다. 실시간으로 이벤트를 수신 및 처리할 수 있습니다.
- Azure Functions - 데이터를 처리하고 쿼리하는 방법을 사용자 지정하는 것은 물론 간단한 인증 메커니즘을 선호하기 때문에 선택했습니다.
- Azure Cosmos DB - 더 높은 수집 속도로 데이터를 크기 조정 및 저장하기 위해 선택했습니다.
단계별 설명
데이터 수집
- 디바이스 클라이언트에서 Azure 함수를 호출하여 원격 분석 데이터를 보냅니다.
- 해당 데이터를 유효성 검사하고 Azure 이벤트 허브로 전달합니다.
- Azure 이벤트 허브는 데이터를 개별 Azure Cosmos DB 문서로 변환하는 두 번째 Azure 함수를 트리거합니다.
- Azure 함수 대상에서 원격 분석 데이터를 사용하여 Azure Cosmos DB 데이터베이스에 새 문서를 추가합니다.
데이터 보기
- 게임 엔진에서 쿼리가 생성되고 Azure 함수로 보내져 Azure Cosmos DB 쿼리로 변환됩니다.
- 데이터는 Azure Cosmos DB에서 가져와 시각화를 위해 게임 엔진에 반환됩니다.
팁
대시보드에서 데이터를 시각화하려는 경우 Azure Cosmos DB 데이터베이스를 Power BI에 연결합니다.
배포 템플릿
다음 단추를 클릭하여 프로젝트를 Azure 구독에 배포합니다.
이 작업은 Azure 구독에 대한 telemetry_server.deployment.json ARM 템플릿 파일의 템플릿 배포를 트리거합니다. 그러면 필요한 Azure 리소스가 만들어집니다. 이로 인해 Azure 계정에 요금이 부과될 수 있습니다.
Azure 서비스에 대한 명명 규칙 및 제한 사항을 요약하는 섹션이 포함된 일반 지침 문서를 확인하세요.
참고
ARM 템플릿이 작동하는 방식에 관심이 있는 경우 이 참조 아키텍처에 활용된 각 서비스에서 Azure Resource Manager 템플릿 설명서를 참조하세요.
팁
Azure Functions를 로컬로 실행하려면 다음과 동일한 앱 설정을 사용하여 local.settings.json 파일을 업데이트합니다.
구현 세부 정보
단일 Azure 함수 앱이 위에 표시된 모든 함수를 포함해야 하며 동일한 호스팅 계획을 공유할 수 있습니다.
수집 함수
- 들어오는 원격 분석 페이로드의 유효성을 검사합니다.
- 데이터 파이프라인의 다음 단계를 위해 데이터를 예상되는 형식으로 변환합니다.
- 데이터를 Azure 이벤트 허브로 보냅니다.
- Azure 이벤트 허브에서 데이터를 수락한 경우 202를 반환합니다.
이벤트 허브 트리거 함수
- 이벤트 데이터 페이로드를 읽습니다.
- 각 이벤트에 대한 개별 Azure Cosmos DB 문서를 만듭니다.
- Azure Cosmos DB에 문서를 업로드합니다.
쿼리 함수
- 클라이언트에서 생성한 쿼리를 구문 분석합니다.
- Azure Cosmos DB SQL 형식 쿼리를 생성합니다.
- JSON 개체에서 결과를 래핑하여 클라이언트에 반환합니다.
사용자의 요구에 맞는 가격 책정 계획을 선택하는 것은 사용하는 원격 분석 서비스, 그리고 동일한 Azure 함수 앱에서 실행되는 다른 항목에 따라 달라집니다.
최적화 고려 사항
Azure Cosmos DB TTL(활성 시간)을 사용하여 저장된 문서를 정리할 기한을 설정하면 Azure Cosmos DB에 저장된 이전 데이터를 자동으로 만료시킬 수 있습니다.
HTTP 오버헤드를 줄이기 위해 수집 Azure 함수에 보내는 이벤트를 클라이언트에서 일괄 처리해야 합니다. 일괄 처리 작업이 대규모인 경우에는 클라이언트 측 압축을 사용하는 것이 좋습니다.
팁
이벤트 허브 로 전송하기 전 서버 측에서 일괄 처리 작업을 압축하면 처리량 단위 비용을 줄일 수 있습니다. 이 기능은 여러 서비스가 이벤트를 소비하거나 같은 네임스페이스에 다른 이벤트 허브가 있는 경우 특히 유용합니다.
추가 리소스 및 샘플
- 온라인 멀티 플레이어 게임을 위한 빅 데이터 참조 아키텍처 및 구현
- Azure Functions에서 초당 10만 이벤트를 처리
- Azure Functions에서의 신뢰할 수 있는 이벤트 처리(메시지 손실을 방지하는 방법)
- Azure Functions를 사용한 순차적 이벤트 처리
고급 스트리밍 집계 지원
기본 제공되는 창 작업 지원을 찾는 경우, 즉 특정 기간에 속하는 이벤트 하위 집합에 대해 집합 기반 계산(집계) 또는 기타 연산을 수행하려는 경우에는 Azure 이벤트 허브를 Azure Cosmos DB에 연결하는 Azure 함수를 Azure Stream Analytics로 바꾸는 것을 고려해야 합니다.
Azure Stream Analytics는 이벤트 스트림에 대한 고급 집계 시나리오를 추가하는 데 사용할 수 있습니다. 예를 들어 Azure Functions는 상태 비저장이므로 기본적으로 이벤트 스트림에 대한 창 작업을 지원하지 않습니다.
가격
Azure 구독이 없는 경우 무료 계정을 만들어 12개월 무료 서비스를 시작합니다. 이러한 서비스의 제한을 초과하지 않는 한 Azure 무료 계정에서 무료로 제공하는 서비스에 대해서는 요금이 부과되지 않습니다. Azure Portal을 통해 또는 사용량 파일을 통해 사용량을 확인하는 방법을 알아보세요.
이러한 참조 아키텍처를 실행하는 동안 사용되는 Azure 서비스의 비용은 사용자가 부담합니다. 전체 금액은 사용량에 따라 달라집니다. 참조 아키텍처에 사용된 각 서비스에 대한 가격 웹 페이지를 참조하세요.
- Event Hubs 가격
- Azure Functions
- Azure Cosmos DB 가격
- Azure Stream Analytics 가격
- Azure Virtual Machines 가격
Azure 가격 계산기를 사용하여 사용하려는 Azure 서비스에 대한 비용을 구성하고 예측할 수도 있습니다. 가격은 추정치이며 실제 가격 견적이 아닙니다. 실제 가격은 구매 날짜, 결제 통화, 사용자가 Microsoft와 체결하는 계약 유형에 따라 다를 수 있습니다. 가격에 대한 추가 정보는 Microsoft 영업 담당자에게 문의하세요.
Azure 가격 계산기의 설정이 게임 타이틀의 원격 분석 구현과 어떤 관련이 있는지 간편하게 확인하려면 이 가이드를 참조하세요.