AWS 기술 블로그
플레이어 당 1달러로 Unreal Engine 기반게임을 Amazon GameLift로 서비스 하는 비법!
이 글은 AWS Gametech Blog에 게시된 ‘How to host your Unreal Engine game for under $1 per player with Amazon GameLift‘ by Ryan Greene를 한국어 번역 및 편집하였습니다.
소개
게임 개발자들은 멀티플레이어 경험을 더 혁신적으로 만드는 방법을 찾곤 합니다. 그렇지만, 게임 개발사들은 게임의 성능 및 재미와 이윤이라는 벽에 부딛히곤 합니다. 이는 유저의 기대감, 게임 개발의 비용 증가, 그리고 더 심화되는 경쟁의 상황과 연관되어 있습니다. 다양한 사이즈의 게임을 만드는 개발자들은 운영 비용을 아끼면서도 유저 경험을 해치지 않는 것을 항상 요구해 왔습니다.
가장 좋은 시작 점은 게임의 기술적 운영 비용을 평가하는 것입니다. 독립적 게임 기술 분석 기관인, Omdia에 의하면, 2023년에는 전체 스튜디오의 기술 지출의 19% 가량을 차지하는 기술 운영 비용이 2027년에는 25%까지 상승할 것으로 분석하고 있습니다. 또한 이 운영 비용의 가장 큰 비중을 차지 하는 것은, 컴퓨팅 및 데이터 저장장치를 포함하는 게임 서버로 60% 가량의 운영 비용을 차지할 것으로 파악됩니다.
Amazon Web Services (AWS)의 Amazon GameLift 는 개발자들이 멀티플레이어 게임을 위한 Dedicated 게임 서버를 관리하고 크기조정하는 것을 도와주는 완전 관리형 서비스로, on-premise에 배포된 환경보다 70% 가량의 서버 컴퓨팅 비용을 절감할 수 있는 서비스 입니다. 그렇지만, 고객들은 Amazon GameLift의 인스턴스 설정의 모범사례를 따름으로서 더 많은 절감을 이룰 수 있습니다. 이 플로그 포스팅에서는, 비용 절감 기술을 도입하면서도, 1유저당 월 1$의 운영 비용으로 엔드 유저의 성능적 게임적 경험을 해치지 않는 방법 3가지를 소개하고자 합니다.
가격 오버뷰
먼저, 어떤 타입의 게임이 이 예시에 적용될지, 어떠한 변수가 유저당 비용의 계산에 필요한지 정의해보겠습니다. 이 블로그 포스팅에서는, Unreal Engine으로 구성된 멀티플레이어 게임을 예시로 들겠습니다. Unreal로 구성된 멀티플레이어 게임은 Amazon GameLift에서 구동되는 정확한 타입이면서도, 과거 데이터들의 레퍼런스를 통해 가격 예시를 더 쉽게 만들어 줄 것입니다.
다음은, Amazon GameLift의 호스팅 비용을 산정해 보겠습니다. 우리는 AWS Pricing Calculator for Amazon GameLift 를 활용해 게임 특화된 설정과 함께 가변적으로 움직이는 월간 호스팅 비용을 예상해 볼 수 있습니다. 이를 통해, 플레이어 간의 매치메이킹을 호스팅 하는 관리서버를 포함하는 Amazon GameLift의 총 비용에 대해서도 파악할 수 있습니다.
마지막으로, 위의 Amazon GameLift의 비용 산정은 할인 혹은 크레딧으로 인한 할인을 반영하지 않습니다. 이제 인스턴스 비용 절감을 시작해 보겠습니다.
Amazon Gamelift 인스턴스 비용
Amazon GameLift의 인스턴스 비용은 게임을 호스팅 할 컴퓨트 자원과 연관이 있습니다. 이는 동시 접속자 수 (CCU)를 얼마나 지원할 것인지와 연관이 있습니다.
Amazon GameLift는 게임 서버의 활동에 응답하여 가변적으로 확장하는 스케일을 가지고 있습니다. 플레이어가 게임에 접속하고 세션을 시작하게 되면, Amazon GameLift는 자동으로 더 많은 인스턴스를 생성합니다. 만약 플레이어의 수가 줄어들게 되면, Auto Scaling은 필요없는 인스턴스들을 정리합니다. Auto Scaling과 초당 빌링은 Amazon GameLift고객이 변화하는 게임 플레이어의 수에 끊임없이 신경쓰고, 서버의 수량을 고민하지 않고, 게임 자체의 개발에 집중 할 수 있도록 돕습니다.
Amazon GameLift 인스턴스를 선택하고 설정하는데는 많은 변수가 있습니다. 특히 세가지 설정이, Amazon Gamelift 호스팅 비용의 큰 방향을 결정하게 됩니다. 이는 운영체제의 선택, AWS Spot Instance의 사용, 그리고 인스턴스 타입의 선택입니다.
운영체제
Amazon GameLift는 Windows Server 2016, Amazon Linux 2, 그리고, Amazon Linux 2023을 구동하는 게임 서버를 지원합니다. 이 중 Amazon Linux 2023이 최신의 OS 입니다. Windows운영 체제는 라이센스 비용을 포함하고 있기 때문에, Linux 계열 서버 대비 2배 가량의 비용 증가를 보입니다. Linux 운영체제의 서버를 선택하는 것이 Amazon Gamelift를 더 비용 효율적으로 사용하는 방법이라 할 수 있습니다.
온디맨드 인스턴스 | Linux | Windows | 비용 절감율 |
c4.large | $0.13 | $0.24 | 46% |
c4.xlarge | $0.25 | $0.47 | 47% |
c4.2xlarge | $0.48 | $0.93 | 48% |
c4.4xlarge | $0.96 | $1.85 | 48% |
c4.8xlarge | $1.92 | $3.72 | 48% |
Amazon GameLift 가격 페이지 에서 가져온 2023년 8월 31일 기준 On-demand 인스턴스 비용
Spot Instance
Amazon Gamelift의 서버 군(Fleet)에 대한 AWS Spot Usage의 목표 비율을 정의하는 것이 비용 절감의 핵심이라 할 수 있습니다. Spot Instance는 AWS의 컴퓨트 용량에서 50%에서 85%까지의 비용 절감은 On-demand 가격 대비 제공해드립니다. Spot Instance를 사용하게 되면, Spot 인스턴스 비용으로 컴퓨트 비용을 저렴하게 사용할 수 있습니다. Spot Instance의 가격은 Amazon EC2가 설정하며, 이는 장기간의 Spot Instance의 공급과 수요의 변화에 따라 결정이 됩니다. Amazon GameLift는 소유권 알고리즘을 추가하여, 새로운 게임 세션이 게임 서버에 생성될때 플레이어의 지연시간, 인스턴스 가격, 그리고 스팟 회수율을 판단하여, 게임서버의 가용성을 최대한 높게 유지하면서도 비용을 효율화 할 수 있도록 도움을 드립니다. Spot Instance는 보장된 가용량이 아니고 회수될 수 있습니다. 그렇지만 Game session queue의 사용과 인스턴스 다각화를 통해, Behaviour Interactive를 포함한 Amazon GameLift 고객들은 비용 효율적이면서도 안정적인 Spot Instance 풀을 찾아내고 있습니다. 이러한 접근을 통해 60% Spot Usage 목표치로 Spot Instance를 도입할 수 있습니다.
Linux 인스턴스 | 스팟 | 온디맨드 | 비용 절감율 |
c4.large | $0.04 | $0.13 | 66% |
c4.xlarge | $0.09 | $0.25 | 64% |
c4.2xlarge | $0.18 | $0.48 | 63% |
c4.4xlarge | $0.36 | $0.96 | 62% |
c4.8xlarge | $0.73 | $1.92 | 62% |
Amazon GameLift 가격 페이지 에서 가져온 2023년 8월 31일 기준 Linux인스턴스의 Spot 및 On-demand 인스턴스 비용
인스턴스 타입
Amazon GameLift는 23개 지역에 68개의 인스턴스 패밀리를 지원합니다. Unreal Game의 일반적 사례를 고려하였을 때, c4 인스턴스를 후보에 올려 보도록 하겠습니다. C 타입 인스턴스는 컴퓨트 최적화 인스턴스로 게임서버 워크로드를 포함한 컴퓨트 집적 워크로드에 적합니다. c4는 C타입의 4세대 인스턴스 패밀리를 뜻합니다.
Amazon GameLift는 c7g를 포함한 AWS Graviton3 processors 로 구성된 인스턴스를 지원합니다. g는 AWS Graviton 을 탑재한 인스턴스를 의미합니다. AWS Graviton는 컴퓨트 집약적인 게임 워크로드에 가성비의 최적화를 지원하는 프로세서 입니다. AWS Graviton 프로세서는 AWS가 설계한 64-bit Arm Neoverse 코어를 탑재한 프로세서 입니다. Graviton의 3세대 프로세스인 Graviton3 프로세스는 Graviton2 대비, 1/ 25%가량 향상된 성능, 2/ 2배 높은 부동소수점계산, 그리고 3/ DDR5 메모리 기술에 의한 50% 더 빠른 메모리 액세스 성능을 제공합니다. 또한, c7g 인스턴스는 C++, C#, 그리고, C와 같이 널리 쓰이는 프로그래밍 워크로드를 Linux 베이스로 지원하여 Unreal Engine 기반의 게임 서버에 적합합니다.
Graviton은 게임을 호스팅하는 비용을 최적화 하고 싶은 고객의 요구를 위한 옵션 중 하나입니다. Epic Games를 비롯한, AWS 게임 고객들은 이미 Graviton기반의 인스턴스를 사용하고, 효과를 보고 있습니다. Mark Imbriaco, Epic Games의 Seniro Director of Engineering은 “플레이어를 위한 더 나은 게임의 매력과 몰입도를 구현하기 위하기 위해, 우리는 AWS 의 Graviton3 기반의 c7g EC2 인스턴스를 사용하였습니다. 우리의 테스팅 팀은 c7g 인스턴스가 Fortnite와 어떠한 Unreal Engine으로 만들어진 게임 경험을 제공할 때 확연히 나은 가성비를 제공하면서도 지연기반에 민감한 워크로드에 적합한 옵션이라는 것을 보았습니다.” 라고 평하였습니다.
Linux 온디맨드 인스턴스 | c7g | c4 | 비용 절감율 |
Large | $0.09 | $0.13 | 26% |
xlarge | $0.18 | $0.25 | 27% |
2xlarge | $0.35 | $0.48 | 27% |
4xlarge | $0.70 | $0.96 | 27% |
8xlarge | $1.39 | $1.92 | 27% |
Amazon GameLift 가격 페이지 에서 가져온 2023년 8월 31일 기준 Linux 인스턴스의 On-demand 인스턴스 비용
총 인스턴스 비용
위에서 살펴본 3가지 GameLift의 구성 변화를 통해, 게임 서버 호스팅 비용의 유의미한 효과를 이끌어 낼 수 있습니다. 이것들을 모두 합쳐볼때, 3가지 권고사항은 다른 대안에 비해 최대 80% 가량의 확연한 비용 절감을 이룰 수 있습니다. 이에 더하여, Linux 운영체제를 구동하는 Graviton 인스턴스 타입을 선택한다면 게임서버의 안정성과 성능의 향상까지 이룰 수 있습니다.
인스턴스 | Linux, Spot, c7g | Windows, OD, c4 | 총 비용 절감율 |
Large | $0.05 | $0.24 | 81% |
xlarge | $0.09 | $0.47 | 80% |
2xlarge | $0.18 | $0.93 | 81% |
4xlarge | $0.36 | $1.85 | 80% |
8xlarge | $0.73 | $3.72 | 80% |
Amazon GameLift 가격 페이지 에서 가져온 2023년 8월 31일 인스턴스 별 비용
게임리프트의 네트워크 대역폭 비용
대역폭 비용은 Data Transfer Out(DTO)에 대해 집계되거나, Amazon GameLift에서 인터넷을 통해 전송되는 데이터와 연관이 있습니다 (AWS DTO 요금 자세히 알아보기). DTO 비용은 보통 게임 개발자가 고려하기 어렵거나 간과할 수 있는 항목입니다.
왜냐하면 DTO의 요구사항은 각 게임별로 독특하기 때문입니다. AWS가 여러분의 Game 설정에 완벽히 맞는 설정을 각각 추천하기는 어렵지만, Unreal Engine을 GameLift에서 구동하는 고객들의 과거 사용량에서 단서를 얻을 수 있습니다. 이러한 고객들의 평균 GameLift의 월간 호스팅 비용 대비 DTO의 사용 비용은 매우 다양합니다. 그렇지만, 보통의 경우 Unreal 게임을 GameLift에 구동하는 경우 20% 가량의 DTO 비용이 전체 GameLift 호스팅 비용에서 차지하게 됩니다.
모두 합쳐보기
이제 AWS Pricing Calculator for Amazon GameLift 에 주요 권고 사항들을 입력하고 월간 호스팅 비용을 예측해 보도록 하겠습니다. 이 비용은 월간 최대 동시 접속자(Peak CCU)에 대한 예상을 기준으로 하나의 플레이어당 비용을 구하기 위해 나누어져 있습니다. 10만 유저를 예시의 Unreal 게임에 대한 peak CCU로 가정하였을 때를 산정하였지만, 어느 Peak CCU를 산정하더라도 비슷한 플레이어 하나당 호스팅 비용을 보입니다.
이 가정에서 더 세세한 예측을 위해 필요한 것은 다음과 같습니다.
- 평균 CCU는 Peak의 50% 정도이다.
- 1개의 인스턴스는 16개의 게임 세션을 구동한다.
- 8명의 유저가 하나의 세션에서 플레이를 한다.
- 10%의 여유분을 유지한다.
- DTO는 전체 비용의 20%를 차지한다.
이 가정을 통해 GameLift 비용은 월간 81,396.97 USD가 예측되었고, 이는 플레이어 하나 당 월간 0.81 USD입니다. peak CCU가 상승하여 1만 peak CCU로 가정하여도 플레이어당 0.87 USD로 예측이 되었고, 100만 peak CCU에 대해서도 $0.78 USD가 예측되었습니다. 모두의 경우 플레이어 한 명에게 플레이를 제공하는데 1 USD아래의 비용이 사용되었습니다.
비용 세부 정보(월별) | 10K CCU | 100K CCU | 1백만 CCU |
선불 | $0 | $0 | $0 |
인스턴스(c7g.2xlarge) | $6,436.55 | $64,365.67 | $643,654.69 |
대역폭(DTO) | $2,285 | $17,031.20 | $135,291.20 |
총 호스팅 비용 | $8,721.55 | $81,396.67 | $778,945.89 |
플레이어당 호스팅 비용 | $0.87 | $0.81 | $0.78 |
총 비용과 플레이어 당 비용은 Amazon Gamelift 의 AWS Pricing Calculator 를 통해 산출되었습니다.
지금까지 세 가지의 주요한 Amazon GameLift의 비용 효율화 권고사항에 대해 살펴보았습니다. 다음의 내용들을 통해 추가적인 절감을 이끌어 낼 수 있습니다.
- 다각화 : 지역 및 인스턴스 타입 다각화를 통해 인스턴스 가용성을 올리고, Spot 인스턴스 사용시에도 가용성과 회수 이벤트를 줄일 수 있습니다. Spot인스턴스를 많이 사용할 수록 많은 비용 절감을 이루어 낼 수 있습니다.
- Queue : GameLift의 세션 큐를 사용한다면 Spot이 가용하지 않을 때, On-demand로 요청을 재전송할 수 있습니다. 이를 통해 가용성 리스크를 줄일 수 있습니다.
- 인스턴스 최적화 : 게임이 런칭된 이후에도, 지속적으로 서비스 상태를 관찰하고, 지표들을 모니터링하고, 성능 최적화 및 인프라 최적화를 해주어야 합니다. Amazon GameLift의 설정을 이에 따라 변경함으로서 지속적이고 효과적으로 비용을 절감할 수 있습니다.
- 서버 운영 : GameLift의 운영 기능을 어떠한 컴퓨팅 리소스에서도 사용할 수 있는, GameLift Anywhere기능을 통해 여러 환경을 운영하는 중복적인 비용을 절감하고 개발을 효율화 할 수 있습니다.
결론
Amazon GameLift는 개발자들에게 게임 자체의 요구사항을 충족하는 서비스 구성을 관리할 수 있는 많은 기능들을 제공합니다. 그리고 이 게시글에서 살펴보았듯이, 설정을 조절하는 것은 플레이어당 호스팅 비용에 큰 영향을 미칠 수 있습니다. Linux 서버, Spot 인스턴스, 그리고 Graviton3 프로세스가 탑재된 EC2 인스턴스를 도입하는 것은 GameLift의 호스팅 비용을 줄이는 중요한 관문이 될 수 있습니다. 개발자는 당연히 게임 런칭을 하기 초기 단계에서도 매우 중요한 유연성과 비용 효율성을 달성하기 위해 게임 호스팅 환경을 결정할 수 있습니다. 게임 런칭 시에 모든 것을 보장하기는 어렵겠지만, 이번 게시글에서 살펴본 권고사항이 여러분의 다음 게임을 플레이어 당 1 USD 이하의 비용으로 구현할 수 있도록 좋은 시작점을 마련해 줄 것입니다.