AWS 기술 블로그
Amazon CloudWatch Internet Monitor를 활용한 더 나은 게임 경험
이 글은 AWS for Games Blog에 게시된 ‘Using Amazon CloudWatch Internet Monitor for a Better Gaming Experience‘ by David Fowler를 한국어 번역 및 편집하였습니다.
이 게시물은 게임 고객들이 Amazon CloudWatch Internet Monitor를 사용하여 게임 성능을 더 쉽게 모니터링할 수 있는 방법을 설명합니다. 온라인 게임 애플리케이션 아키텍처의 개요를 예시로 제공하고, 게이머를 위한 성능 및 가용성 모니터링의 일상적인 문제를 설명하며, Internet Monitor를 사용하여 게임 애플리케이션의 지연 시간 및 가용성 문제를 식별하고 해결하는 방법을 소개합니다. 이 게시물은 이전 블로그 게시물인 “CloudWatch Internet Monitor 소개“에서 다룬 기본 정보를 알고 있다고 가정합니다.
여러 게임 회사들은 AWS의 서비스를 활용하여 하드웨어 및 소프트웨어 구성 요소의 폭넓은 기능을 사용하고 있습니다. 멀티플레이어 온라인 게임은 원활하고 끊김 없는 게임 플레이를 위해 빠르고 안정적인 인터넷 연결이 필요하므로 인터넷 속도와 연결성은 게이머들에게 중요한 우선순위입니다. 모든 게이머가 지연 시간을 이해하는 것은 아니지만, 게임 개발자에게는 플레이어들에게 원활한 경험을 제공하는 것이 최우선 과제 중 하나입니다. Internet Monitor는 사용자가 전 세계적으로 지연 시간 문제를 겪고 있는 위치를 빠르게 파악하고, AWS에서 인터넷을 통한 애플리케이션의 성능을 개선하기 위한 인사이트를 제공합니다.
게임 워크로드의 아키텍처
멀티플레이어 게임 서버가 클라우드에서 실행될 때, 게임 세션은 원격 서버에서 호스팅되며 컴퓨터, 태블릿 또는 스마트폰과 같은 최종 장치에 연결됩니다. 비디오와 오디오가 로컬 장치로 스트리밍되기 때문에 게이머들은 다른 사람들과 인터랙티브하게 게임을 즐길 수 있으며, 특정 고급 게임 하드웨어가 필요하지 않습니다. 아래 다이어그램은 예시적인 게임 애플리케이션 아키텍처와 일반적인 AWS 구성 요소를 보여줍니다.
그림 1. AWS에서의 게임 애플리케이션 예시 아키텍처
- 게임 클라이언트는 컴퓨터, 태블릿 또는 휴대용 게임 장치입니다. 이는 게임 포털에 접근하고 게임을 플레이하는 플레이어의 장치입니다.
- 프론트엔드 서버에는 실제 게임을 호스팅하는 게임 서버와 리더보드, 매치메이킹, 채팅 서비스, 인벤토리 관리, 분석 등의 기능을 제공하는 플랫폼 서비스가 포함됩니다.
- 백엔드 서버에는 게임 데이터베이스 및 분석 서비스를 제공하는 서버(지역별 또는 중앙 집중식)가 포함되며, 게임 상태를 유지하고 분석 데이터를 저장하며 게임 서버를 최신 상태로 유지합니다.
클라우드에서 게임 서버를 운영하면 전 세계 어디에서나 플레이어가 게임을 즐길 수 있는 확장 가능하고 고성능의 플랫폼을 제공합니다. 그러나 인터넷은 사용자들이 자원을 경쟁하는 분산 환경이기 때문에 간헐적인 문제가 발생할 수 있습니다. 다음 섹션에서는 일반적인 인터넷 문제에 대해 다룹니다.
게임 스튜디오를 위한 인터넷 문제
다음은 클라우드 게임을 이용하는 게이머들이 겪을 수 있는 일반적인 인터넷 문제들 입니다.
- 지연 시간과 렉: 지연 시간은 플레이어들 사이에서 “핑 시간” 또는 “왕복 시간”으로 잘 알려져 있습니다. 이는 플레이어의 장치에서 게임 서버까지 데이터가 이동하고 다시 돌아오는 데 걸리는 시간입니다. 높은 지연 시간은 게임에서의 지연과 렉을 유발할 수 있으며, 이는 플레이어가 동기화되지 않아 게임 플레이에 영향을 미칠 수 있습니다.
- 패킷 손실: 패킷 손실은 게이머의 장치에서 게임 서버로 전송된 데이터의 일부가 손실되는 경우를 말합니다. 이는 게임 내 글리치(glitch)나 심지어 게임 크래쉬를 초래할 수 있어, 플레이어가 일어난 일을 놓치는 등 좌절감을 줄 수 있습니다.
- 대역폭: 대역폭은 초당 전송될 수 있는 데이터의 양을 의미합니다. 고품질 게임은 원활한 실행을 위해 더 많은 대역폭을 필요로 하며, 느린 인터넷 연결은 끊김 있는 게임 플레이와 긴 로딩 시간을 초래할 수 있습니다.
온라인 게임 모니터링의 과제
플레이어의 경험 품질은 인터넷 연결 성능과 긴밀히 연결되어 있습니다. 연결 품질이 저하될 때 특정 인터넷 문제의 원인을 파악하는 것은 쉽지 않습니다. 여러 요인이 원인이 될 수 있으며, 실제 문제가 무엇인지 추적하기 어렵기 때문입니다. 다음은 몇 가지 이슈들 입니다.
- 인터넷 성능은 여러 다른 제공업체로 구성
- 인터넷 서비스 제공업체(ISP)가 네트워크 문제를 겪을 때 가시성의 부족
- ISP 성능에 대한 개선을 유도하는데이터 수집
다음 다이어그램은 인터넷 문제를 해결하는 것이 얼마나 복잡한지 보여줍니다. 다이어그램에서 한 AWS 리전 내에 위치한 게임 서버가 인터넷을 통해 연결되어 게임을 실행합니다. ISP는 인터넷에 접근하고 연결하기 위한 여러 접속 지점(POP)을 보유하고 있습니다. POP 또는 다른 접속 지점에서 인터넷 중단이 발생할 수 있습니다. 게임 개발자는 이러한 종류의 인터넷 문제를 감지하기 위해 테스트, 모니터링, 문제 해결을 수행해야 합니다.
그림 2. AWS 클라우드에 접근하는 클라이언트 및 ISP 네트워크
AWS로 들어오는 트래픽을 모니터링하여 인터넷을 통해 제공되는 게임의 성능을 이해하는 것은 필수적입니다. 그러나 인터넷 트래픽 데이터를 수집하고 추적하는 것은 어렵고 비용이 많이 들 수 있습니다. 네트워크 캡처 도구는 트래픽을 방해할 수 있으며 플레이어에게 시스템 부하를 일으킬 수 있습니다. Internet Monitor를 사용하면 이러한 문제를 피할 수 있습니다.
고객 요구사항 해결
Internet Monitor를 사용하면, 여러 지리적 위치와 인터넷 서비스 제공업체(자율 시스템 번호 또는 ASN)에 걸친 인터넷 문제를 단 한 줄의 코드도 작성하지 않고 또는 네트워크 캡처 도구를 플레이어의 기기에 설치하지 않고 모니터링할 수 있습니다. 문제가 발생하면 Internet Monitor는 영향을 받은 위치와 ISP를 포함한 문제의 영향을 시각화하고, 그 위치를 정확히 파악하는 데 도움을 줍니다. 글로벌 트래픽 패턴과 상태 이벤트를 확인하고, 이벤트의 위치를 기준으로 세부 정보를 탐색할 수 있습니다. 또한 다른 ISP를 통해 경로를 변경하거나 다른 AWS 리전 또는 서비스를 사용하여 향후 플레이어의 네트워크 경험을 개선할 수 있는 조치를 배울 수 있습니다.
고객 사용 사례
이 예제에서는 Internet Monitor가 게임의 성능을 모니터링하고 개선하는 데 어떻게 도움을 줄 수 있는지를 설명합니다. 이 사용 사례는 AWS 리전에서 글로벌 게임을 출시한 게임 스튜디오입니다. 이 스튜디오는 모든 플레이어에게 원활한 게임 경험을 제공하는 것을 중요하게 여기며, 네트워크 문제에 신속하게 대응하고자 합니다. 스튜디오는 게임의 모든 클라이언트 트래픽을 확인하기 원하며, 따라서 인터넷을 통해 들어오는 트래픽의 100%를 모니터링하기로 선택했습니다.
스튜디오는 상위 100개 도시에서의 성능 향상에 중점을 두고, 문제가 발생하는 영역을 정확히 찾아내어 모니터링하는 트래픽을 조정하고자 합니다. 플레이어 경험을 개선할 수 있는 위치를 식별하기 위해, 스튜디오는 첫 번째 바이트 시간(Time to First Byte, TTFB)을 주요 지표로 사용합니다. TTFB는 서버에서 게임 클라이언트로 첫 번째 바이트의 데이터를 전송하는 데 걸리는 시간을 측정합니다. 스튜디오는 또한 TTFB를 가장 많이 줄일 수 있는 리전의 서버에 게임을 배포하여 향후 게임 출시를 최적화하고자 합니다. 이를 통해 가장 많은 플레이어 기반의 게임 플레이를 개선할 수 있습니다.
1단계: 모니터 생성, Internet Monitor 사용자 가이드의 단계를 따라 모니터를 생성하고, 다음 스크린샷과 같이 트래픽의 100%를 선택합니다.
2단계: 약 10분 후, Internet Monitor 대시보드의 “Traffic insights” 탭에서 상위 10개 위치에 대한 최적화 제안을 확인할 수 있습니다. 더 많은 위치에 대한 제안을 보려면 CloudWatch Log Insights에서 쿼리를 실행하는 다음 단계를 따르세요.
- CloudWatch 콘솔에서 Log Insights를 선택합니다.
- Log Groups(로그 그룹) “/aws/internet-monitor/<모니터 이름>/byCity”를 선택합니다.
- 적절한 시간 기간을 선택하고, 다음 쿼리를 실행합니다.
fields @timestamp, clientLocation.city as @city, clientLocation.subdivision as @subdivision, clientLocation.country as @country, `trafficInsights.timeToFirstByte.currentExperience.serviceName` as @serviceNameField, concat(@serviceNameField, ` (`, `serviceLocation`, `)`) as @currentExperienceField, concat(`trafficInsights.timeToFirstByte.ec2.serviceName`, ` (`, `trafficInsights.timeToFirstByte.ec2.serviceLocation`, `)`) as @ec2Field, `trafficInsights.timeToFirstByte.cloudfront.serviceName` as @cloudfrontField, concat(`clientLocation.networkName`, ' (AS', `clientLocation.asn`, `)`) as @networkName | filter ispresent(`trafficInsights.timeToFirstByte.currentExperience.value`) | stats avg(`trafficInsights.timeToFirstByte.currentExperience.value`) as @averageTTFB, avg(`trafficInsights.timeToFirstByte.ec2.value`) as @ec2TTFB, avg(`trafficInsights.timeToFirstByte.cloudfront.value`) as @cloudfrontTTFB, sum(bytesIn + bytesOut) as @totalBytes, latest(@ec2Field) as @ec2, latest(@currentExperienceField) as @currentExperience, latest(@cloudfrontField) as @cloudfront, count(*) by @networkName, @city, @subdivision, @country | display @city, @subdivision, @country, @networkName, @totalBytes, @currentExperience, @averageTTFB, @ec2, @ec2TTFB, @cloudfront, @cloudfrontTTFB | sort @averageTTFB desc | limit 100
쿼리는 상위 100개 위치에 대해 가장 높은 평균 TTFB로 정렬되므로, 해당 지역을 우선적으로 개선할 수 있습니다.
3단계: 대부분의 플레이어에 대한 성능을 개선하기 위해 다음 서버를 어느 리전에 배포할지 결정하려면, Internet Monitor의 “Traffic insights” 탭을 확인합니다. “Traffic optimization suggestions” 아래에서 클라이언트 위치 또는 TTFB를 기준으로 정렬한 다음, 다양한 서비스 옵션을 선택하여 TTFB에 미치는 영향을 확인할 수 있습니다.
예를 들어, Amazon Elastic Compute Cloud (EC2) 또는 Amazon CloudFront를 특정 리전에 선택하여 예측된 평균 TTFB가 현재 TTFB와 어떻게 비교되는지 확인할 수 있습니다. 테이블은 현재 경로가 이미 최적화되었는지, 또는 변경을 통해 특정 위치 및 ASN의 TTFB를 낮출 수 있는지를 보여줍니다. 이러한 옵션과 추천 사항을 보면 애플리케이션의 새로운 설정을 계획하여 성능을 개선하는 데 도움을 받을 수 있습니다.
샘플 최적화 제안은 다음 스크린샷에 표시되어 있습니다. 가장 큰 문제를 확인하기 위해 현재 TTFB가 가장 높은 순으로 테이블을 정렬했습니다.
런던, 영국은 총 트래픽 양이 가장 많고 TTFB가 가장 높습니다. Internet Monitor는 TTFB를 줄이고 더 많은 플레이어에게 최적화된 게임 경험을 제공하기 위해, 게임 스튜디오가 다음 서버를 eu-west-2 리전에 배포할 것을 제안합니다 (Lowest TTFB setup 아래에 표시됨).
결론
이 블로그 게시물에서는 Amazon CloudWatch Internet Monitor를 사용하여 플레이어의 경험을 개선하는 방법을 설명했습니다. AWS의 글로벌 네트워킹 기반에서 캡처된 연결 데이터를 사용하여, 게임 플레이어에게 영향을 미치는 인터넷 문제를 식별하고, 트래픽을 다른 AWS 리전이나 서비스로 전환하여 연결성을 개선하기 위한 데이터와 권장 사항을 활용할 수 있습니다. Internet Monitor에 대해 더 자세히 알아보려면, 다음 문서를 참조하십시오.