Game Server Engine

안전성 및 안정성을 갖춘 고성능 엘라스틱 스테이트풀 게임 서버 호스팅 서비스

소개

Game Server Engine(GSE)은 게임 전용 서버 호스팅 서비스를 제공합니다. 스테이트풀 게임 서비스의 배포 및 용량 확장 및 축소를 지원하여 서비스 검색, 효율적인 서버 스케일링 및 가까운 곳에서 스케쥴링이 가능합니다. 이에 따라 개발자는 안정적이고, 딜레이가 낮은 다중 사용자 게임의 배포 환경을 빠르게 구축할 뿐 아니라 유지보수 비용을 대폭 절감할 수 있습니다. 또한 Unreal, Unity 엔진을 지원하며 C#, C++ 또는 gRPC를 지원하는 모든 언어의 server 프레임워크를 배포 및 실행할 수 있어, FPS, MOBA, 턴제, MMORPG, 보드 게임과 같이 전투 서버, 알림 PUSH 등 상태 유지가 필요한 시나리오에 사용됩니다.

기능
GSE는 게임 전용 서버 호스팅 서비스를 제공하며, 스테이트풀 게임 서버의 배포, Auto Scaling 및 가까운 곳에 스케쥴링을 지원합니다.

프로그램 배포 및 업데이트
프로그램 배포
개발자는 GSE를 통해 프로그램 코드 패키지 및 종속성을 업로드할 수 있으며, GSE는 프로그램을 서버 플릿에 배포하여 설정에 맞게 운행합니다.

무점검 업데이트
일반적으로 서버 정지 업데이트를 진행하는 게임 시나리오와 달리 GSE는 식별자 메커니즘을 제공하여, 무점검 업데이트를 진행할 수 있습니다.

A/B Test
부담없이 A/B Test를 실행하거나 종료할 수 있습니다.

서버 인스턴스 관리
Auto Scaling
1일 주기의 Auto Scaling: GSE는 서버 인스턴스 유형 및 스케일링 범위를 설정하여 해당 범위 내에서 인스턴스를 스케일링합니다. 하루에도 시간대 별로 게임 액세스 양이 달라지는데, 일반적으로 점심과 저녁 시간대에 서버 인스턴스 양이 가장 많고, 자정 이후에 가장 낮아집니다. GSE는 매일 시각마다 서버의 액세스 트래픽을 기준으로 자동 스케일링을 진행합니다.
스테이트풀 스케일 다운: GSE는 실행 중인 인스턴스의 스케일 인은 지원하지 않으며, 저부하로 인한 스케일 인 발생 시 게임 프로세스에 해당 서버가 현재 스케일 인 상태임을 통지합니다. 서버에 새로운 게임 서버 세션이 할당되지 않도록 차단하는 경우는 있지만, 인스턴스를 강제로 스케일 인하여 클라이언트에 연결할 수 없는 일은 발생하지 않습니다. 게임 프로세스에서 종료 명령을 보내야만 프로세스를 정지하고 서버를 회수합니다.

다중 리전 배포
GSE는 다중 리전 배포를 지원하며, 여러 리전에 서버 플릿을 생성하여 하나의 서버 플릿 큐를 구축합니다. 큐 요청 시 시스템이 자동으로 정상 실행 리전의 서버 플릿을 선택해 게임 클라이언트에게 액세스를 제공하며, 개발자가 플릿의 우선순위를 직접 조정할 수도 있습니다. 특정 리전에 장애가 발생할 경우 단시간 내에 다른 리전으로 변경합니다.

글로벌 배포
GSE는 상하이, 북미 등지에 배포 중이며, 더 많은 지역에 배포될 예정입니다.

게임 서버 세션 관리
GSE는 게임 서버 세션을 관리 및 할당합니다. 비즈니스 관점에서 게임 서버 세션은 하나의 게임 포지션을 나타내며, 더 넓게는 하나의 서비스를 대표합니다. 백그라운드 관점에서의 게임 서버 세션은 하나의 프로세스와 대응하며, GSE는 설정에 따라 프로세스를 사전에 실행하므로 한 프로세스에 하나의 게임 서버 세션이 대응하는 것이 일반적입니다. 클라이언트는 클라우드 API를 통해 게임 서버 세션의 할당을 요청하며, GSE는 유휴 프로세스에 게임 서버 세션을 할당합니다.

게임 서버 세션 시작
게임 서버 세션 요청 호출 시, GSE가 정상적인 유휴 프로세스를 할당하며 게임 서버 세션이 시작됩니다.

게임 서버 세션 종료
게임 서버 세션에 유저가 없거나 게임 서버 세션이 불안정할 경우, 세션이 자동 종료되거나 수동으로 종료할 수 있습니다. 종료 전에 로그를 저장하므로 개발자가 쉽게 문제를 찾아낼 수 있습니다.

가까운 곳에 게임 서버 세션 할당
GSE는 네트워크 딜레이 사정에 따라 유저와 가장 가까운 리전을 할당할 수 있습니다.
서버는 사용 가능한 게임 서버 세션 비율에 따라 스케일링을 진행합니다.
게임 서버 플릿에서 게임 서버 버퍼링을 엘라스틱 스케일 인/아웃의 조건으로 설정할 수 있습니다. 게임 서버 세션 버퍼링은 사용 가능한 게임 서버 세션 비율과 같습니다.

모니터링 및 로그
시스템은 서버 인스턴스(CVM) 모니터링, 게임 서버 세션 모니터링 및 작업 로그를 제공합니다.

특징

  • 실시간 스케일링

    GSE는 서버 인스턴스 유형 및 스케일링 범위를 설정하여, 유저가 설정한 범위 내에서 인스턴스를 스케일링할 수 있습니다. 하루 동안 게임 액세스 양이 가장 높은 시간대와 낮은 시간대가 있으므로, GSE는 유저의 트래픽에 맞게 자동으로 서버 용량을 확장하여, 예측 불가능한 유저 트래픽 증가에 대비합니다. 유저 트래픽 이용량이 적을 경우 남은 서버 용량에 대해 별도의 과금이 진행되지 않습니다.

  • 스테이트풀 스케일 인 지원

    GSE는 실행 중인 인스턴스의 스케일 인은 지원하지 않으며, 저부하로 인한 스케일 인 발생 시, 게임 프로세스에 해당 서버가 현재 용량 축소 상태임을 통지합니다. 서버에 새로운 게임 서버 세션이 할당되지 않도록 차단하는 경우는 있지만, 인스턴스를 강제로 스케일 인하여 클라이언트에 연결할 수 없는 일은 발생하지 않습니다. 게임 프로세스에서 종료 명령을 보내야만 프로세스를 정지하고 서버를 회수합니다.

  • 상태 확인 및 서비스 보장

    서버 상태를 확인하여 런타임 환경을 실시간으로 모니터링합니다. 서버 장애 발생 시 몇 초 안에 비정상 서버를 차단하도록 스케쥴링하므로 수동 작업이 필요 없습니다. 장애 범위가 넓을 경우 속도를 측정해 자동으로 리전을 변경하거나 수동 설정을 통해 장애 리전을 차단할 수 있습니다.

  • 다중 리전 배포 및 재해 복구

    다중 리전 배포를 지원하며, 여러 리전에 서버 플릿(Fleet)을 생성하여 하나의 서버 플릿 큐를 구축합니다. 큐 요청 시 시스템이 자동으로 정상 실행 리전의 서버 플릿을 선택해 게임 유저가 액세스하도록 함으로써 특정 리전에 장애 발생 시 다른 리전으로 빠르게 전환할 수 있습니다.

  • 무점검 업데이트

    무점검 업데이트 기능을 제공합니다. 클라이언트는 식별자를 통해 서버 플릿 내의 서버를 요청하며, 버전 업데이트 시 새로 생성한 서버 플릿에 식별자 설정을 옮기는 것으로 무점검 업데이트를 진행할 수 있습니다.

  • 근접 액세스

    GSE는 클라이언트와 각 리전 서버 간의 딜레이를 측정하는 툴을 제공하며, 알고리즘을 통해 찾은 최신 서버 주소를 클라이언트에게 제공합니다. 또한 개발자는 각 리전 서버 플릿의 우선순위를 직접 조정할 수 있습니다.

  • 플랫폼 연동

    PC, 모바일 및 콘솔 게임에 관계없이 플랫폼 간 호출이 가능합니다. unreal, unity 엔진으로 컴파일된 프로그램을 실행할 수 있으며 C++, C# 또는 grpc을 지원하는 모든 언어의 사용자 정의 게임 sever 프레임워크를 지원합니다.

  • 정가제 및 종량제

    서버 자체의 실시간 스케일링으로 리소스 수량을 60% 절약 가능하며, 실제 사용량에 따라 초 단위, 시간 단위로 요금이 청구됩니다.

응용 시나리오

시나리오 설명
PVP 서버에서의 대전은 일반적으로 몇 분에서 몇 십 분 정도 소요되며, 길어도 한 시간을 초과하지 않습니다. 매일 점심과 저녁 시간대에 액세스 양이 가장 많으며, 게임 유저가 적은 시기에는 서버가 필요하지 않을 수 있습니다.

솔루션
GSE를 사용함으로써 액세스 양이 가장 높을 때와 낮을 때 즉시 스케일 인/아웃을 진행할 수 있어 비용 면에서 매우 경제적입니다. 이외에도 GSE는 각 대전마다 가장 가까운 리전의 대상을 할당해 대전의 공정성과 네트워크 안정성을 보장하며, 보드게임, 턴제/전략 게임, 실시간 대전 유형의 게임에 적합합니다. 게임 서버 세션 생성에서, 세션이란 하나의 방 혹은 서버를 의미합니다. 이 게임 서버 세션 내에서 유저들은 전투, 채팅 등의 커뮤니케이션이 가능합니다.

권장 사양

시나리오 설명
자주 사용되는 게임 프레임워크에서 클라이언트와 서버가 장기간 연결을 유지해야 서버에서 클라이언트에게 알림 푸시를 즉각적으로 보낼 수 있습니다.
알림 푸시는 일반적으로 게임의 핵심 모듈이라고 볼 수 있습니다. 알림 푸시 배포 측면에서 발생할 수 있는 문제는 다음과 같습니다. 1) 네트워크 장애로 광범위한 알림 푸시에 실패할 수 있습니다. 2) 대부분의 알림 푸시는 적은 수의 고사양 서버들을 사용하므로, 한 서버에만 장애가 발생해도 큰 타격을 입습니다.

솔루션
GSE를 사용할 경우 최저 비용으로 여러 리전 재해 복구가 가능하며, 한 리전에 장애가 발생할 경우 신속히 다른 리전으로 변경할 수 있습니다. 알림 푸시는 여러 서버로 배포되며, 단일 서버에 장애가 발생할 경우 바로 다른 서버로 변경하므로 영향이 비교적 작습니다.

권장 사양

가격

Game Server Engine(GSE) 서비스 기능은 2020년 8월 31일에 오픈 베타 테스트를 종료하고 2020년 9월 1일 00:00:00부터 본격적인 상업화가 시작되며, 가격 문서는 가까운 시일 내에 업로드되므로 도움이 필요하시면 연락바랍니다.