Game Servers 개요

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

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

Game Servers 리소스

이 섹션에서는 Game Servers를 관리하기 위해 상호작용하는 주요 리소스에 대해 설명합니다. 다음 그림에서는 이러한 리소스가 게임 프로젝트를 배포하는 방법을 보여줍니다.

샘플 게임 프로젝트 배포
그림 1. Game Servers에 샘플 게임 프로젝트 배포

Game Servers 프로젝트

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

위치

위치는 리소스 범위를 정의하고, 기본값은 global으로 가장 높은 가용성과 여러 Google Cloud 리전에서 데이터가 중복되는 위치를 제공합니다. 수동으로 리소스 위치를 특정 Google Cloud 리전으로 설정할 수 있습니다(일부 리전은 지원되지 않음). 데이터 저장 위치 또는 장애 조치 도메인을 제어하려면 다음에 지원되는 위치 중 하나로 기본 global 설정을 재정의합니다.

지원되는 위치

  • asia-east1
  • asia-east2
  • asia-northeast1
  • asia-northeast2
  • asia-northeast3
  • asia-south1
  • asia-southeast1
  • asia-southeast2
  • australia-southeast1
  • europe-central2
  • europe-north1
  • europe-west1
  • europe-west2
  • europe-west3
  • europe-west4
  • europe-west6
  • global
  • northamerica-northeast1
  • southamerica-east1
  • us-central1
  • us-east1
  • us-east4
  • us-west1
  • us-west2

렐름

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 플릿을 포함한 클러스터 내 리소스를 어느 것도 삭제하지 않습니다.

게임 서버 배포

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

여러 렐름에 서로 다른 구성 적용
그림 2. 구성 버전 1.0이 미국 렐름에 출시되고, 버전 1.1이 유럽 및 일본 렐름에 출시되었습니다.

게임 서버 구성

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

  • 피크타임 중에는 시간(분)당 N개의 할당을 지원하기에 충분한 서버가 있어야 하고 오프 피크타입 중에는 시간(분)당 M개의 할당을 지원할 수 있어야 합니다.ㅇ
  • 계획된 게임 이벤트의 경우 날짜 및 시간 범위의 예약 용량을 N%까지 늘리세요.

출시

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

아키텍처

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

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

Agones가 Game Servers 클러스터를 만들 때 Game Servers에 전달하는 네임스페이스에서 Game Servers를 관리하려면 Kubernetes 서비스 계정이 있어야 합니다. 기본 네임스페이스 이외의 네임스페이스를 사용하는 경우 일반적으로 helm install의 일부로 이 서비스 계정을 만듭니다.

Game Servers가 Agones 클러스터에 연결하려면 Google Cloud 프로젝트 서비스 계정이 있어야 합니다. 이 서비스 계정은 렐름 또는 배포와 같은 리소스를 처음 만들 때 자동으로 생성됩니다.

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

다음 단계