[SEO 부제목]
이 지침은 게임 개발자가 Amazon GameLift와 서버리스 백엔드 구성 요소를 사용하여 AWS에서 영구 월드 게임을 구축하고 가상 세계를 호스팅하는 데 도움이 됩니다. 이 아키텍처는 관리형 및 서버리스 구성 요소를 사용하여 운영 작업을 줄이고 플레이어 수요에 따라 확장됩니다. 개발자는 이 아키텍처를 사용하여 MacOS 및 Windows에서 영구 가상 세계 게임 개발을 시작할 수 있습니다. 이 지침에는 코드형 인프라(IaC) 자동화, 종속성 설정을 위한 구성 스크립트, 샘플 Unity 클라이언트/서버 구현이 포함됩니다.
아키텍처 다이어그램
참고: A~C 단계는 시스템의 백엔드를 나타내고 1~9단계는 프런트엔드를 나타냅니다.
A 단계
Amazon Eventbridge가 WorldManager
AWS Lambda 함수를 1분마다 트리거합니다. 이 함수는 Amazon GameLift API를 통해 기존 월드의 상태를 확인합니다.
B 단계
WorldManager Lambda 함수가 세션과 월드의 현재 상태를 Amazon DynamoDB에 저장하여 백엔드 액세스를 가속화합니다.
C 단계
WorldManager가 DynamoDB에서 구성된 월드를 쿼리하고, Amazon GameLift API CreateGameSession을 호출하여 실행 중이지 않은 모든 월드를 생성합니다.
1단계
게임 클라이언트가 Amazon Cognito 자격 증명 풀에 ID와 자격 증명을 요청하여 승인된 API 요청에 서명합니다.
2단계
게임 클라이언트가 Amazon API Gateway를 통해 월드 리스트를 요청합니다. API Gateway가 DynamoDB에서 정의된 리전의 게임 세션 정보를 확인하는 ListWorlds Lambda 함수를 트리거합니다.
3단계
게임 클라이언트가 API Gateway를 통해 JoinWorld Lambda 함수를 호출하여 특정 리전의 특정 월드에 참가하도록 요청합니다.
4단계
Lambda 함수가 플레이어를 위한 플레이어 세션을 생성하고, DynamoDB에서 해당 월드의 플레이어 수를 늘리고, 연결 정보를 게임 클라이언트에 보냅니다.
5단계
클라이언트가 전송 제어 프로토콜(TCP)을 통해 Amazon GameLift 세션에 직접 연결하고 플레이어 세션 ID를 보냅니다.
6단계
Amazon GameLift 세션에서 Amazon GameLift 서버 소프트웨어 개발 키트(SDK)를 사용하여 플레이어 세션 ID를 검증합니다.
7단계
Amazon GameLift가 월드별 플레이어 데이터를 확인하고 필요에 따라 플레이어 데이터를 업데이트합니다. 플레이어가 떠난 후 최신 플레이어 위치를 저장합니다.
8단계
Amazon GameLift 세션이 DynamoDB에서 예정된 종료를 확인하고 요청 시 종료됩니다.
9단계
게임 서버에서 CloudWatch 에이전트를 사용하여 Amazon CloudWatch에 로그와 지표를 전송합니다.
시작하기
Well-Architected 원칙
AWS Well-Architected Framework는 클라우드에서 시스템을 구축하는 동안 사용자가 내리는 의사 결정의 장단점을 이해하는 데 도움이 됩니다. 이 프레임워크의 6가지 원칙을 통해 안정적이고 안전하며 효과적이고 비용 효율적이며 지속 가능한 시스템을 설계 및 운영하기 위한 아키텍처 모범 사례를 배울 수 있습니다. AWS Management Console에서 추가 요금 없이 사용할 수 있는 AWS Well-Architected Tool을 사용하면 각 원칙에 대한 여러 질문에 답하여 이러한 모범 사례와 비교하며 워크로드를 검토할 수 있습니다.
위의 아키텍처 다이어그램은 Well-Architected 모범 사례를 고려하여 생성된 솔루션의 예시입니다. Well-Architected를 완전히 충족하려면 가능한 많은 Well-Architected 모범 사례를 따라야 합니다.
-
운영 우수성
AWS Cloud Development Kit(AWS CDK)는 AWS CloudFormation을 사용하여 리소스 업데이트와 롤백을 제어함으로써 배포와 업데이트를 처리합니다. 이렇게 하면 수동 구성 변경으로 인한 오류가 줄어듭니다.
Amazon GameLift 플릿 업데이트의 경우 CloudFormation에서 대체 플릿을 생성합니다. 기존 플릿을 종료하기 전에 대체 플릿이 완전히 활성화되어 트래픽을 수용할 때까지 기다립니다.
-
보안
게임 클라이언트는 Amazon Cognito 자격 증명 풀 ID를 사용하여 백엔드 서비스에 대한 액세스를 보호합니다. 자격 증명 풀에서 제공하는 AWS Identity and Access Management(IAM) 자격 증명으로 요청에 서명하면 이러한 보호가 가능합니다. API Gateway에서 호스팅되는 제공된 API에는 인증된 요청만 허용됩니다. 또한 게임 클라이언트는 자신의 계정 데이터에만 액세스할 수 있습니다.
-
신뢰성
게임 서버(및 결과적으로 게임 월드)가 충돌하는 경우 아키텍처는 자동으로 월드를 새 월드로 교체하여 해당 특정 월드의 동일한 영구 데이터에 액세스할 수 있습니다.
-
성능 효율성
Amazon GameLift를 사용하면 클라이언트와 서버 간의 직접적인 통신을 통해 거의 실시간으로 성능을 최적화할 수 있습니다. 개발자는 아키텍처를 통해 여러 AWS 리전에서 게임 서버를 호스팅하여 게임 클라이언트와 서버 간의 지연 시간을 줄일 수 있습니다.
-
비용 최적화
아키텍처는 API Gateway, Lambda 및 DynamoDB를 비롯한 서버리스 구성 요소를 활용하므로 플레이어 트래픽을 기반으로 정확한 양의 리소스에 대해 비용을 지불하여 비용을 절감할 수 있습니다. 또한 Amazon GameLift는 수요에 따라 확장되도록 구성할 수 있으므로 언제든지 사용하지 않는 리소스를 최소한으로 유지할 수 있습니다.
-
지속 가능성이 아키텍처는 관리형 서비스와 서버리스 서비스를 사용하여 현재 플레이어 로드에 필요한 리소스만 실행하므로 환경에 미치는 개인의 영향을 줄여줍니다.
관련 콘텐츠
고지 사항
샘플 코드, 소프트웨어 라이브러리, 명령줄 도구, 개념 증명, 템플릿 또는 기타 관련 기술(AWS 직원을 통해 제공되는 상기 항목 포함)은 AWS 이용 계약 또는 귀하와 AWS 간의 서면 계약(둘 중 해당되는 것)에 따라 AWS 콘텐츠로 제공됩니다. 이 AWS 콘텐츠를 프로덕션 계정, 프로덕션 또는 기타 중요한 데이터에 사용해서는 안 됩니다. 귀하는 특정 품질 제어 방식 및 표준에 따라 프로덕션급 사용에 적절하게 샘플 코드와 같은 AWS 콘텐츠를 테스트, 보호 및 최적화할 책임이 있습니다. AWS 콘텐츠를 배포하면 Amazon EC2 인스턴스를 실행하거나 Amazon S3 스토리지를 사용할 때와 같이 요금이 부과되는 AWS 리소스를 생성하거나 사용하는 것에 대한 AWS 요금이 발생할 수 있습니다.
본 지침에 서드 파티 서비스 또는 조직이 언급되어 있다고 해서 Amazon 또는 AWS와 서드 파티 간의 보증, 후원 또는 제휴를 의미하지는 않습니다. AWS의 지침을 기술적 시작점으로 사용할 수 있으며 아키텍처를 배포할 때 서드 파티 서비스와의 통합을 사용자 지정할 수 있습니다.