Game Servers 개요

Game Servers는 게임 인프라팀을 위해 구축된 관리형 게임 서비스로 이를 통해 전역 전용 게임 서버 플릿을 손쉽게 배포하고 관리할 수 있습니다. Game Servers는 컨테이너 조정에 Kubernetes를 사용하고 게임 서버 제품군 조정 및 수명 주기 관리에 Agones를 사용하여 게임 서버 클러스터를 관리합니다. 언제든지 Game Servers를 통해 기존 게임 세션에는 아무런 영향 없이 클러스터를 연결하거나 연결 해제할 수 있습니다. 클러스터를 연결 해제한 후에도 오픈소스 Agones 설치를 계속 실행할 수 있습니다.

전역 게임 서버 구성을 사용하여 플레이할 서버 수와 장소에 대한 규칙, 배포할 게임 서버 바이너리를 정의하여 게임 서버 클러스터를 제어합니다. Game Servers는 중앙 관리형 출시를 기반으로 Agones 플릿을 자동으로 생성하여 모든 관리형 클러스터에 대해 자동으로 안전하게 출시되게 합니다. 특히 사용 중인 게임 서버가 갑작스럽게 중단되지는 않으므로 진행 중인 게임 세션이 중단되지 않습니다.

Game Servers 리소스

이 섹션에서는 Game Servers를 관리하기 위해 상호작용하는 주요 리소스에 대해 설명합니다.

Game Servers 프로젝트

production 또는 testing 같은 단일 환경은 Game Servers가 사용 설정된 Google Cloud 프로젝트입니다. 격리 및 보안을 개선하기 위해 일반적으로 My Game Production, My Game Testing 같은 여러 Google Cloud 프로젝트를 사용하여 단일 게임 타이틀을 관리합니다.

위치

위치는 리소스 범위를 정의하고, 기본값은 global으로 가장 높은 가용성과 복수의 Google Cloud 리전에서 데이터가 중복되는 위치를 제공합니다. 수동으로 리소스의 위치를 특정 Google Cloud 리전으로 설정할 수 있습니다. 데이터가 저장되는 위치 또는 장애 조치 도메인이 무엇인지 제어하려는 경우 기본값 global 설정을 재정의하세요.

렐름

Game Servers는 Google Kubernetes Engine에서 실행되는 Kubernetes 클러스터를 지원하도록 설계되었습니다. Google Cloud 리전 및 영역의 개념을 기반으로 Game Servers는 렐름의 메타 리전 개념을 도입합니다. 렐름은 플레이어 집단을 위한 게임 지연 시간 요구사항에 기초하여 게임 서버 클러스터를 사용자 정의로 그룹화한 것입니다. 렐름에는 시간대가 할당되어 있으며, 렐름 내에서 클러스터에서 시간 기반 구성을 사용할 수 있습니다. 렐름은 위치 안에 존재합니다.

게임 서버 클러스터

게임 서버 클러스터는 렐름 리소스의 하위 리소스입니다. 각 게임 서버 클러스터는 렐름에 등록된 Agones를 실행하는 Kubernetes 클러스터의 네임스페이스에 해당합니다. 렐름 내의 Game Servers 클러스터는 지연 시간이나 컴퓨팅 성능과 같은 측정과 관련하여 사용자 환경 관점에서 동등하게 고려되어야 합니다. default가 아닌 다른 네임스페이스를 사용하려면 Kubernetes에서 네임스페이스를 만들고 Agones를 사용하도록 구성해야 합니다.

Game Servers 클러스터를 만들면 Game Servers는 필요에 따라 Agones 플릿자동 확장 처리를 만듭니다. Game Servers는 수동으로 생성된 Agones 플릿을 변경하지 않습니다.

Game Servers 클러스터를 삭제한 후 Game Servers는 Game Servers에서 만든 자동 확장 처리와 Agones 플릿을 포함한 클러스터 내 리소스를 어느 것도 삭제하지 않습니다.

게임 서버 배포

게임 서버 배포는 전 세계 모든 게임 서버 클러스터에 배포할 수 있는 게임 서버 소프트웨어 버전의 전역 레코드입니다. 게임 서버 배포는 게임 서버 구성과 출시 리소스 모두의 상위 리소스입니다.

게임 서버 구성

게임 서버 구성은 게임 서버 수, 버퍼, 게임 서버 버전을 지정하는 게임 서버 배포 리소스의 하위 리소스입니다. 게임 서버 구성에서 확장 정책을 정의합니다. 확장 정책은 다음 예시와 같이 정적 또는 시간 기반일 수 있습니다.

  • 피크타임 중에는 분당 사용량이 많은 시간(분)마다 분당 N개의 할당을 지원하는 서버가 충분해야 합니다.
  • 계획된 게임 이벤트의 경우 날짜 및 시간 범위의 예약 용량을 N%까지 늘리세요.

출시

출시는 게임 서버 구성을 대상 렐름에 매핑하는 게임 서버 배포 리소스의 하위 리소스입니다. 기본적으로 출시는 모든 렐름에 게임 서버 구성을 할당합니다. A/B 테스팅 및 카나리아 테스트의 경우 대체 게임 서버 구성을 수신하도록 특정 렐름을 재정의할 수 있습니다.

아키텍처

Game Servers는 전역적으로 사용 가능한 제어 영역 API를 제공하며, API 호출 또는 gcloud 명령줄 도구를 사용하여 배포를 설명하는 리소스를 다음과 같이 제어할 수 있습니다.

  • 렐름 만들기 및 수정
  • 게임 서버 클러스터를 실시간으로 생성, 등록, 수정
  • 게임 서버 배포, 게임 서버 구성, 출시 생성, 배포, 업데이트

Game Servers가 리소스를 관리할 수 있게 하려면 Agones 클러스터에 대한 제한된 액세스 권한을 가진 Kubernetes 서비스 계정을 만들어야 합니다. Game Servers는 이 계정을 사용하여 구성 변경사항을 전역적으로 Kubernetes 클러스터로 푸시합니다.

각 게임 서버 배포는 Agones GameServerSpec과 동등한 게임 서버 매개변수를 설명하고, 특정 빌드를 실행하는 게임 서버 플릿을 만들어야 하는 게임 서버 클러스터를 타겟팅하는 정책을 지정합니다. 정책을 사용하여 개별 클러스터 확장 환경설정을 설정할 수도 있습니다.

다음 단계