기술 자료

지원

Multiplay Hosting

Multiplay Hosting

게임 서버 라이프사이클

Learn about the lifecycle stages your game servers go through from creation to termination.
읽는 시간 1분최근 업데이트: 21일 전

서버 라이프사이클은 보호되는 리소스를 사용하여 머신에서 프로세스로 실행되는 빌드 실행 파일의 라이프사이클을 말합니다. 서버 라이프사이클은 다음 세 단계로 구성됩니다.
  1. 생성
  2. 시작
  3. 중지
서버 라이프사이클의 시작과 종료는 게임의 요구 사항에 따라 달라집니다. 할당 라이프사이클보다 훨씬 전이나 직전에 시작될 수 있고, 각 할당 이후에 종료되거나 여러 할당에 걸쳐 지속될 수 있습니다.

생성

서버 라이프사이클의 첫 번째 단계에서는 머신에서 서버 슬롯이 생성됩니다. 서버 슬롯은 빌드 실행 파일을 실행하기 위한 리소스의 플레이스홀더입니다. Multiplay Hosting은 머신을 프로비저닝하고 시작할 때 서버 밀도 계산에 따라 여러 개의 서버 슬롯을 생성합니다. 서버 밀도 계산에서는 머신의 가용 리소스와 플릿의 사용량 설정에 따라 머신이 수용할 수 있는 서버 슬롯 수를 파악합니다.

시작

서버 라이프사이클의 두 번째 단계에서는 빌드 및 구성 옵션과 같은 정보를 사용하여 빌드 실행 파일(또는 Docker 이미지)이 하나의 시작되며, 이는 첫 번째 단계에서 생성된 서버 슬롯에서의 프로세스입니다. 서버가 시작되는 시점은 게임의 요구 사항에 따라 달라집니다. 일반적으로 서버는 할당 요청에 대한 응답으로, 또는 Multiplay Hosting이 머신을 프로비저닝할 때 시작됩니다. 이는 플릿에 프로비저닝 시 시작 설정이 활성화되어 있는지에 따라 달라집니다. 서버가 시작되는 그 밖의 상황은 다음과 같습니다.
  • 할당이 생성된 다음 Multiplay Hosting이 올바른 빌드 실행 파일을 실행하고 있지 않은 서버 슬롯을 선택했습니다. 이 경우 Multiplay Hosting이 올바른 빌드를 사용하여 빌드 실행 파일을 재시작합니다.
  • 할당이 생성된 다음 Multiplay Hosting이 잘못된 빌드 구성을 사용하는 서버 슬롯을 선택했습니다. 이 경우 Multiplay Hosting이 올바른 빌드 구성을 사용하여 빌드 실행 파일을 재시작합니다.
  • API를 사용하거나 Unity Dashboard를 통해 서버를 수동으로 시작했습니다.
  • 빌드 실행 파일 프로세스에 크래시가 발생했습니다. 이 경우 Multiplay Hosting이 크래시를 감지하여 자동으로 빌드 실행 파일을 재시작합니다.
  • 머신이 프로비저닝 프로세스를 완료했고, 프로비저닝 시 시작 설정이 활성화되어 있습니다.
  • 프로비저닝 시 시작 설정이 활성화되어 있고, 빌드 실행 파일 프로세스가 의도적으로 종료되었습니다. 이 경우 Multiplay Hosting이 자동으로 서버를 재시작합니다.

중지

서버 라이프사이클의 세 번째 단계에서는 서버 빌드 실행 파일 프로세스가 중지됩니다. 중지는 몇 가지 방식으로 발생할 수 있으며, 각각 Multiplay Hosting으로부터 서로 다른 응답을 트리거합니다. 내부 시나리오와 외부 시나리오 모두 게임 서버의 중지를 유발할 수 있으며, 때로는 둘 이상의 시나리오(예: 종료와 크래시)가 중지를 유발하기도 합니다.

내부 중지

내부 시나리오는 게임 서버 자체(빌드 실행 파일의 프로세스)에서 비롯되는 이벤트입니다. 다음과 같은 시나리오가 포함됩니다. 다음 다이어그램은 내부 시나리오가 서버 중지를 트리거하는 경우의 서버 라이프사이클을 보여줍니다.
내부 중지

내부 중지

의도적인 종료

종료란 종료 코드 0을 사용하여 빌드 실행 파일 프로세스가 의도적으로 종료되는 것을 가리킵니다. Multiplay Hosting에서 빌드 실행 파일이 의도적으로 종료되었음을 감지하면, 자동으로 서버 슬롯의 할당을 해제하고
server.json
파일
의 할당 ID를 지운 후 서버 슬롯이 다음 할당을 받을 수 있도록 준비합니다.
대부분의 게임에서는 빌드 실행 파일 프로세스가 각 세션 후에 종료되는 매치메이커 플로를 사용하는 것이 권장되는 베스트 프랙티스입니다. 이 방식으로 프로세스가 종료되면 자동 할당 해제가 트리거됩니다.

크래시

크래시란 의도적인 종료와 반대로 0이 아닌 종료 코드와 함께 빌드 실행 파일 프로세스가 의도치 않게 종료되는 것을 가리킵니다. Multiplay Hosting에서 빌드 실행 파일이 크래시된 것을 감지하면 동일한 할당 ID를 사용하여 서버를 재시작함으로써 복구를 시도합니다. 단, 서버가 계속해서 크래시하면 Multiplay Hosting이 계속해서 서버를 재시작하지는 않습니다. 크래시 백오프를 참조하십시오.

외부 중지

외부 시나리오는 API 호출이나 자동화된 Multiplay Hosting 행동에서 비롯되는 이벤트로, 게임 서버 동작에 대한 응답이나 구성으로 인해 발생합니다. 다음과 같은 시나리오가 포함됩니다. 다음 다이어그램은 외부 시나리오가 서버 중지를 트리거하는 경우의 서버 라이프사이클을 보여줍니다.
외부 중지

외부 중지

게임 서버 오작동

오작동이란 빌드 실행 파일 프로세스에서 크래시 이외의 예기치 않은 상황이 발생했음을 의미합니다. 일반적으로 이는 빌드 실행 파일 프로세스가 서버 슬롯에서 허용하는 것보다 많은 리소스를 사용하고 있거나 오랫동안 쿼리에 응답하지 않고 있음을 뜻합니다.

빌드 구성 ID 변경

할당이 생성되었고 Multiplay Hosting이 잘못된 빌드 구성(할당 요청에 지정된 것과 다른 빌드 구성)을 사용하는 서버 슬롯을 선택한 경우 Multiplay Hosting은 빌드 실행 파일 프로세스를 재시작(중지 후 시작)합니다. 이 경우 Multiplay Hosting이 올바른 빌드 구성을 사용하여 빌드 실행 파일을 재시작합니다. 서버에서 현재 사용 중인 빌드 구성의 값 변경 사항이 즉시 반영되지 않을 수 있습니다. 빌드 구성을 업데이트하려면 제로 다운타임 릴리스 모델을 따르는 것이 좋습니다.

서버 라이프사이클 배리에이션

게임 서버의 라이프사이클에는 몇 가지 공통점이 있지만, 모든 게임 서버가 동일한 라이프사이클을 따르는 것은 아닙니다. 정확한 동작은 게임 세션을 관리하는 방식에 따라 달라집니다. 가장 일반적인 두 가지 방법은 다음과 같습니다.
  • 멀티 세션 할당: 게임 서버를 지속적으로 할당된 상태로 유지하고 복수의 게임 세션에 동일한 할당을 재사용합니다.
  • 단일 세션 할당: 게임 세션이 종료될 때마다 게임 서버를 할당 해제하고 새로운 할당으로 다음 게임 세션을 시작합니다.

멀티 세션 할당

멀티 세션 할당은 복수의 게임 세션에 대해 동일한 할당을 재사용하는 게임 세션 관리 패턴입니다. 이 패턴에서는 여러 게임 세션 사이에 게임 서버가 할당된 상태로 유지됩니다. 게임 세션이 끝날 때마다 게임 서버 실행 파일을 종료하는 대신 게임 서버 상태를 재설정하거나 로비로 빠져나가는 등 다른 형태의 정리 방식을 사용합니다. 멀티 세션 할당이 적용된 게임 서버의 라이프사이클은 다음과 같은 프로세스를 사용합니다.
  1. 머신 프로비저닝: Multiplay Hosting이 머신을 프로비저닝합니다.
  2. 서버 시작: 프로비저닝 시 시작 설정이 활성화되어 있으므로 게임 서버가 즉시 시작됩니다.
  3. 서버 할당: 게임 서버를 할당합니다.
  4. 게임 세션 시작: 게임 세션 또는 매치가 시작됩니다.
  5. 게임 세션 종료: 게임 세션 또는 매치가 종료됩니다.
  6. 게임 세션 정리: 빌드 실행 파일의 실행 상태가 유지되며, 게임 서버 상태를 재설정하거나 로비로 빠져나가는 등의 정리 로직을 수행합니다.
  7. 게임 세션 시작: 게임 세션 또는 매치가 시작됩니다.
  8. 게임 세션 종료: 게임 세션 또는 매치가 종료됩니다.
  9. 서버 할당 해제: 개발자가 게임 서버를 할당 해제합니다.
  10. 서버가 대기 상태(idle)로 전환: 게임 서버가 할당되어 있지 않으므로 대기 상태로 전환됩니다.
  11. 머신 중지: 머신에 할당된 모든 게임 서버가 대기 상태로 유지된 시간이 TTL을 초과하면 Multiplay Hosting이 머신을 중지합니다.
멀티 세션 할당

멀티 세션 할당

단일 세션 할당

단일 세션 할당은 게임 세션과 할당이 일대일 관계를 맺는 게임 세션 관리 패턴입니다. 이 패턴에서는 게임 세션이 종료될 때마다 빌드 실행 파일이 종료되고 게임 서버가 할당 해제됩니다. 그리고 다음 게임 세션에 대한 새 할당을 생성합니다. 단일 세션 할당이 적용된 게임 서버의 라이프사이클은 다음과 같은 프로세스를 사용합니다.
  1. 머신 프로비저닝: Multiplay Hosting이 머신을 프로비저닝합니다.
  2. 서버는 대기 상태 유지: 게임 서버가 할당되어 있지 않으므로 대기 상태를 유지합니다.
  3. 서버 할당: 게임 서버를 할당합니다.
  4. 서버 시작: 할당과 함께 게임 서버가 시작됩니다.
  5. 게임 세션 시작: 게임 세션 또는 매치가 시작됩니다.
  6. 게임 세션 종료: 게임 세션 또는 매치가 종료됩니다.
  7. 빌드 실행 파일 종료: 게임 세션이 완료되었고 모든 플레이어의 연결이 끊겼음을 감지하면 빌드 실행 파일이 코드 0을 사용하여 자동으로 종료됩니다.
  8. 서버 할당 해제: 빌드 실행 파일이 코드 0으로 종료되었음을 감지하면 Multiplay Hosting이 자동으로 게임 서버를 할당 해제합니다.
  9. 서버가 대기 상태로 전환: 게임 서버가 할당되어 있지 않으므로 대기 상태로 전환됩니다.
  10. 머신 중지: 머신에 할당된 모든 게임 서버가 대기 상태로 유지된 시간이 TTL을 초과하면 Multiplay Hosting이 머신을 중지합니다.
단일 세션 할당

단일 세션 할당

서버 대기

서버 대기는 서버가 지정된 시간 동안 할당을 받거나 예약을 실행할 수 있는 상태로 유지되도록 해 주는 서버 관리 패턴입니다. 자세한 내용은 서버 대기 섹션을 참조하십시오.