AWS CloudFormation을 사용하여 리소스 관리 - 아마존 GameLift

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

AWS CloudFormation을 사용하여 리소스 관리

Amazon GameLift 리소스를 관리하는 데 AWS CloudFormation을 사용합니다. AWS CloudFormation에서는 각 리소스를 모델링하는 템플릿을 만든 다음 해당 템플릿을 사용하여 리소스를 생성합니다. 리소스를 업데이트하려면 템플릿을 변경하고 AWS CloudFormation을 사용하여 업데이트를 구현합니다. 리소스를 스택 및 스택 세트라는 논리 그룹으로 구성할 수 있습니다.

AWS CloudFormation을 사용하여 Amazon GameLift 호스팅 리소스를 유지 관리하면 AWS 리소스 세트를 더 효율적인 방법으로 관리할 수 있습니다. 버전 제어를 사용하여 시간 경과에 따른 템플릿 변경을 추적하고 여러 팀원이 수행하는 업데이트를 조정할 수 있습니다. 템플릿을 재사용할 수도 있습니다. 예를 들어 여러 리전에서 게임을 배포할 때 동일한 템플릿을 사용하여 각 리전에서 같은 리소스를 생성할 수 있습니다. 또한 이러한 템플릿을 사용하여 동일한 리소스 세트를 다른 파티션에 배포할 수 있습니다.

AWS CloudFormation에 대한 자세한 내용은 사용 설명서AWS CloudFormation를 참조하세요. Amazon GameLift 리소스에 대한 템플릿 정보를 보려면 Amazon GameLift 리소스 유형 참조를 참조하세요.

모범 사례

AWS CloudFormation 사용에 대한 자세한 내용은 AWS CloudFormation 사용 설명서AWS CloudFormation 모범 사례를 참조하세요. 또한 이러한 모범 사례는 Amazon GameLift와 특별한 관련성이 있습니다.

  • AWS CloudFormation을 사용하여 리소스를 일관적으로 관리합니다. AWS CloudFormation 외부에서 리소스를 변경하면 리소스가 리소스 템플릿과 동기화되지 않습니다.

  • AWS CloudFormation 스택 및 스택 세트를 사용하여 여러 리소스를 효율적으로 관리합니다.

    • 스택을 사용하여 연결된 리소스 그룹을 관리할 수 있습니다. 예를 들어 빌드가 포함된 스택, 빌드를 참조하는 플릿 및 플릿을 참조하는 별칭이 있습니다. 템플릿을 업데이트하여 빌드를 교체하면 AWS CloudFormation은 빌드에 연결된 플릿도 교체합니다. 그런 다음 AWS CloudFormation은 새 플릿을 가리 키도록 기존 별칭을 업데이트합니다. 자세한 내용을 알아보려면 AWS CloudFormation 사용 설명서스택 작업을 참조하세요.

    • 여러 리전 또는 AWS 계정에서 동일한 스택을 배포하는 경우 AWS CloudFormation 스택 세트를 사용합니다. 자세한 내용을 알아보려면 AWS CloudFormation 사용 설명서스택 세트 작업을 참조하세요.

  • 스팟 인스턴스를 사용하는 경우 온디맨드 플릿을 백업으로 포함시킵니다. 각 리전에 스팟 인스턴스가 있는 플릿 하나 및 온디맨드 인스턴스가 있는 플릿 하나라는 두 개의 플릿이 있는 템플릿을 설정하는 것이 좋습니다.

  • 여러 위치에서 리소스를 관리하는 경우 위치별 리소스와 글로벌 리소스를 별도의 스택으로 그룹화합니다.

  • 글로벌 리소스를 사용하는 서비스와 가까운 곳에 글로벌 리소스를 배치합니다. 대기열 및 매치메이킹 구성과 같은 리소스는 특정 소스에서 대량의 요청을 수신하는 경향이 있습니다. 리소스를 이러한 요청의 소스와 가까운 곳에 배치하면 요청 이동 시간을 최소화하고 전반적인 성능을 향상할 수 있습니다.

  • 매치메이킹 구성을 이 구성이 사용하는 게임 세션 대기열과 동일한 리전에 배치합니다.

  • 스택의 각 플릿에 대해 별도의 별칭을 만듭니다.

AWS CloudFormation 스택 사용

다음은 Amazon GameLift 리소스에 대한 AWS CloudFormation 스택을 설정할 때 사용하도록 권장되는 구조입니다. 최적의 스택 구조는 게임을 한 리전에만 배포하는지 또는 여러 리전에 배포하는지에 따라 다릅니다.

단일 위치용 스택

Amazon GameLift 리소스를 단일 위치에서 관리하려면 2스택 구조를 사용하는 것이 좋습니다.

  • 지원 스택 - 이 스택에는 Amazon GameLift 리소스가 종속되는 리소스가 포함되어 있습니다. 최소한 이 스택에는 사용자 지정 게임 서버 또는 Realtime 스크립트 파일을 저장하는 S3 버킷이 포함되어야 합니다. 이 스택에는 Amazon GameLift 빌드 또는 스크립트 리소스를 생성할 때 S3 버킷에서 파일을 검색할 수 있는 Amazon GameLift 권한을 부여하는 IAM 역할도 포함되어야 합니다. 또한 이 스택에는 DynamoDB 테이블, Amazon Redshift 클러스터 및 Lambda 함수와 같이 게임에 사용되는 기타 AWS 리소스도 포함될 수 있습니다.

  • Amazon GameLift 스택 - 이 스택에는 빌드 또는 스크립트, 플릿 세트, 별칭, 게임 세션 대기열을 포함한 모든 Amazon GameLift 리소스가 포함되어 있습니다. AWS CloudFormation은 S3 버킷 위치에 저장된 파일을 사용하여 빌드 또는 스크립트 리소스를 생성하고 빌드 또는 스크립트를 하나 이상의 플릿 리소스에 배포합니다. 각 플릿에는 해당 별칭이 있어야 합니다. 게임 세션 대기열은 플릿 별칭 중 일부 또는 전부를 참조합니다. FlexMatch를 매치메이킹에 사용하는 경우 이 스택에는 매치메이킹 구성 및 규칙 세트도 포함됩니다.

아래 다이어그램은 단일 AWS 리전에 리소스를 배포하기 위한 2스택 구조를 보여 줍니다.

이 다이어그램은 두 개의 AWS CloudFormation 스택을 보여 줍니다. 하나에는 Amazon GameLift 리소스가 포함되고 다른 하나에는 GameLift를 지원하는 리소스가 포함됩니다. 이 후자의 스택에는 빌드 또는 스크립트 파일을 저장하는 데 사용되는 S3 버킷과 Amazon GameLift가 S3 버킷에서 파일을 검색하도록 허용하는 IAM 역할이 포함됩니다.

여러 리전에 대한 스택

두 개 이상의 리전에 게임을 배포할 때는 리소스가 리전 간에 상호 작용할 수 있는 방식을 명심해야 합니다. Amazon GameLift 플릿과 같은 일부 리소스는 동일한 리전의 기타 리소스만 참조할 수 있습니다. Amazon GameLift 대기열과 같은 기타 리소스는 리전과 무관합니다. 여러 리전에서 Amazon GameLift 리소스를 관리하려면 다음 구조를 사용하는 것이 좋습니다.

  • 리전별 지원 스택 - 이 스택에는 Amazon GameLift 리소스가 종속되는 리소스가 포함되어 있습니다. 이 스택에는 사용자 지정 게임 서버 또는 Realtime 스크립트 파일을 저장하는 S3 버킷이 포함되어야 합니다. DynamoDB 테이블, Amazon Redshift 클러스터 및 Lambda 함수와 같이 게임에 사용되는 기타 AWS 리소스도 포함될 수 있습니다. 이러한 리소스는 대부분 리전별로 다르므로 모든 리전에서 생성해야 합니다. Amazon GameLift에는 이러한 지원 리소스에 대한 액세스를 허용하는 IAM 역할도 필요합니다. IAM 역할은 리전과 무관하므로 어떠한 리전에든 배치되고 기타 모든 지원 스택에서 참조되는 역할 리소스 하나만 있으면 됩니다.

  • 리전별 Amazon GameLift 스택 - 이 스택에는 빌드 또는 스크립트, 플릿 세트 및 별칭을 포함하여 게임이 배포되는 각 리전에 존재해야 하는 Amazon GameLift 리소스가 포함되어 있습니다. AWS CloudFormation는 S3 버킷 위치에 파일이 있는 빌드 또는 스크립트 리소스를 생성하고 빌드 또는 스크립트를 하나 이상의 플릿 리소스에 배포합니다. 각 플릿에는 해당 별칭이 있어야 합니다. 게임 세션 대기열은 플릿 별칭 중 일부 또는 전부를 참조합니다. 이러한 유형의 스택을 설명하도록 하나의 템플릿을 유지 관리하고 이 템플릿을 사용하여 모든 리전에서 동일한 리소스 세트를 생성할 수 있습니다.

  • 글로벌 Amazon GameLift 스택 - 이 스택에는 게임 세션 대기열과 매치메이킹 리소스가 포함되어 있습니다. 이러한 리소스는 어떠한 리전에든 위치할 수 있으며 일반적으로 동일한 리전에 배치됩니다. 대기열은 어떠한 리전에든 위치하는 플릿 또는 별칭을 참조할 수 있습니다. 추가 대기열을 다른 리전에 배치하려면 추가 글로벌 스택을 생성합니다.

아래 다이어그램은 여러 AWS 리전에서 리소스를 배포하기 위한 다중 스택 구조를 보여 줍니다. 첫 번째 다이어그램은 단일 게임 세션 대기열의 구조를 보여 줍니다. 두 번째 다이어그램은 여러 개의 대기열이 있는 구조를 보여 줍니다.

이 다이어그램은 세 개의 리전에 대한 여러 개의 AWS CloudFormation 스택을 보여 줍니다. 각 리전의 지원 스택에는 S3 버킷과 같은 지원 리소스가 포함되어 있습니다. 이러한 스택 중 하나에는 리전과 상관없이 지원 리소스 중 하나에 액세스하기 위해 Amazon GameLift가 사용할 수 있는 IAM 역할이 포함되어 있습니다. 리전별 Amazon GameLift 스택에는 Amazon GameLift 빌드 또는 스크립트, 플릿 및 별칭이 포함되어 있습니다. 글로벌 Amazon GameLift 스택에는 매치메이킹 리소스와 대기열이 포함되어 있으며, 이 대기열은 여러 리전에서 플릿 또는 별칭을 참조할 수 있습니다.
이 다이어그램은 두 리전에 게임 세션 대기열이 있는 글로벌 Amazon GameLift 스택을 포함하여 세 개의 리전에 대한 여러 개의 AWS CloudFormation 스택을 보여 줍니다. 각 대기열은 리전별 Amazon GameLift 스택의 별칭을 참조합니다.

빌드 업데이트

Amazon GameLift 빌드는 빌드와 플릿 간의 관계와 마찬가지로 변경할 수 없습니다. 따라서 새로운 게임 빌드 파일 세트를 사용하도록 호스팅 리소스를 업데이트할 때 다음과 같은 작업이 필요합니다.

  • 새 파일 세트를 사용하여 새 빌드를 생성합니다(교체).

  • 새 게임 빌드를 배포할 새 플릿 세트를 생성합니다(교체).

  • 새 플릿을 가리키도록 별칭을 리디렉션합니다(중단 없이 업데이트).

자세한 정보에 대해서는 AWS CloudFormation 사용 설명서스택 리소스의 업데이트 동작을 참조하세요.

자동으로 빌드 업데이트 배포

관련 빌드, 플릿 및 별칭 리소스가 포함된 스택을 업데이트할 때 기본 AWS CloudFormation 동작은 이러한 단계를 순차적으로 자동으로 수행하는 것입니다. 먼저 새 빌드 파일을 새 S3 위치에 업로드하여 이 업데이트를 트리거합니다. 그런 다음 새 S3 위치를 가리키도록 AWS CloudFormation 빌드 템플릿을 수정합니다. 스택을 새 S3 위치로 업데이트하면 다음 AWS CloudFormation 시퀀스가 트리거됩니다.

  1. S3에서 새 파일을 검색하고, 파일의 유효성을 검사한 다음, 새 Amazon GameLift 빌드를 생성합니다.

  2. 플릿 템플릿에서 빌드 참조를 업데이트합니다. 그러면 새 플릿 생성이 트리거됩니다.

  3. 새 플릿이 활성화된 후 별칭에서 플릿 참조를 업데이트합니다. 그러면 별칭이 새 플릿을 대상으로 하도록 업데이트가 트리거됩니다.

  4. 이전 플릿을 삭제합니다.

  5. 이전 빌드를 삭제합니다.

게임 세션 대기열이 플릿 별칭을 사용하는 경우 별칭이 업데이트되는 즉시 플레이어 트래픽은 새 플릿으로 자동으로 전환됩니다. 게임 세션이 종료되면 기존 플릿에서 플레이어가 점차적으로 드레이닝됩니다. Auto-Scaling은 플레이어 트래픽의 변동에 따라 각 플릿 세트에서 인스턴스를 추가하고 제거하는 작업을 처리합니다. 또는 원하는 초기 인스턴스 수를 지정하여 전환을 위해 빠르게 확장하고 나중에 Auto-Scaling을 활성화할 수 있습니다.

리소스를 삭제하는 대신 AWS CloudFormation에서 리소스를 보존할 수도 있습니다. 자세한 내용은 AWS CloudFormation API 참조RetainResources을 참조하세요.

수동으로 빌드 업데이트 배포

새 플릿이 플레이어를 위해 실행되는 시간을 더 세밀하게 제어하려는 경우 몇 가지 옵션을 선택할 수 있습니다. Amazon GameLift 콘솔 또는 CLI를 사용하여 수동으로 별칭을 관리하도록 선택할 수 있습니다. 또는 빌드와 플릿을 교체하도록 빌드 템플릿을 업데이트하는 대신, 두 번째 빌드 및 플릿 정의 세트를 템플릿에 추가할 수 있습니다. 템플릿을 업데이트하면 AWS CloudFormation에서 두 번째 빌드 리소스와 해당 플릿이 생성됩니다. 기존 리소스는 교체되지 않으므로 삭제되지 않으며 별칭은 여전히 원래 플릿을 가리킵니다.

이 접근 방식의 주요 장점은 유연성을 제공한다는 것입니다. 빌드의 새 버전에 대해 별도의 리소스를 생성하고, 새 리소스를 테스트한 다음, 새 플릿을 플레이어에게 실행하는 시점을 제어할 수 있습니다. 잠재적인 단점은 짧은 기간 동안 각 리전에서 두 배 정도 많은 리소스가 필요하다는 것입니다.

다음 다이어그램에서 이 프로세스를 보여 줍니다.

다이어그램은 두 리전에 게임 세션 대기열이 있는 Amazon GameLift 글로벌 스택을 포함하여 세 개의 리전에 대한 여러 개의 AWS CloudFormation 스택을 보여 줍니다. 각 대기열은 Amazon GameLift 리전별 스택의 별칭을 참조합니다.

롤백 작동 방식

리소스 업데이트를 실행할 때 한 단계가 성공적으로 완료되지 않으면 AWS CloudFormation에서 자동으로 롤백이 시작됩니다. 이 프로세스는 각 단계를 순차적으로 반전하여 새로 생성된 리소스를 삭제합니다.

롤백을 수동으로 트리거해야하는 경우 빌드 템플릿의 S3 위치 키를 다시 원래 위치로 변경하고 스택을 업데이트합니다. 새 Amazon GameLift 빌드와 플릿이 생성되고, 플릿이 활성화된 후 별칭이 새 플릿으로 전환됩니다. 별칭을 따로 관리하는 경우 새 플릿을 가리키도록 별칭을 전환해야 합니다.

실패하거나 중단되는 롤백을 처리하는 방법에 대한 자세한 내용은 AWS CloudFormation 사용 설명서업데이트 롤백 계속하기를 참조하세요.