View a markdown version of this page

서버리스 기반 게임 백엔드 아키텍처 - 게임 산업 렌즈

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

서버리스 기반 게임 백엔드 아키텍처

많은 게임 개발자는 인프라를 관리하는 대신 소프트웨어에 집중할 수 있는 기술을 사용하여 게임을 빌드하는 것을 선호합니다. 이 시나리오에서는 서버리스 아키텍처를 사용하는 것이 좋습니다.이 아키텍처를 사용하면 운영 오버헤드를 줄이면서 기능을 더 빠르게 빌드하고 릴리스할 수 있기 때문입니다. 서버리스 아키텍처는 서버를 설정, 관리 및 확장할 필요 없이 수요에 따라 동적으로 확장할 수 있는 클라우드 서비스를 사용하여 설계되었습니다. 다음 참조 아키텍처는 서버리스 아키텍처를 사용하여 게임을 빌드하는 방법을 보여줍니다.

서버리스 기반 게임 백엔드 참조 아키텍처

서버리스 기반 게임 백엔드 참조 아키텍처

이 참조 아키텍처는 단일 플레이어 및 멀티플레이어 기능을 제공하는 웹 기반 트리비아 게임을 보여줍니다.

  • 플레이어 인증: 플레이어는 플레이어 자격 증명 관리를 위해 사용자 디렉터리로 보안 인증을 제공하는 Amazon Cognito를 사용하여 인증합니다.

  • 서버리스 함수로서의 게임 로직: 게임 기능 및 백엔드 비즈니스 로직은 이벤트에 대한 응답으로 시작되는 함수로 실행되므로 AWS Lambda 함수가 실행될 때만 비용을 지불하기 때문에 비용이 절감됩니다. Lambda는 원하는 프로그래밍 언어를 사용하여 각 게임 기능을 별도의 마이크로서비스로 작성할 수 있는 유연성을 제공합니다. 예를 들어 C#을 사용하여 Unity 게임을 빌드한 경험이 있는 경우 .NET Lambda 함수를 개발하도록 선택하거나 JavaScript로 웹 기반 게임의 프런트엔드와 백엔드를 프로그래밍하려는 경우 Node.js Lambda 함수를 개발하도록 선택할 수 있습니다.

  • 게임 및 플레이어 데이터를 위한 NoSQL 데이터 스토어: DynamoDB를 사용하여 플레이어 및 게임 데이터를 저장합니다. 마이크로서비스에서 대량의 데이터를 저장하기 위해 특별히 구축되었습니다. 이 아키텍처에 설명된 대로 각 게임 기능의 데이터 스토리지 요구 사항에 대해 별도의 데이터 스토어를 사용하는 것이 모범 사례이므로 기능을 독립적으로 모니터링하고 관리할 수 있습니다. 또한 팀 내에서 기능 또는 서비스 소유권이 변경되면 분리 경계가 생성됩니다. 이 참조 아키텍처에서 DynamoDB 테이블은 연결 상태, 게임 세부 정보, 플레이어 진행 상황 및 리더보드 정보와 같은 데이터를 저장하는 데 사용됩니다.

  • 단일 플레이어 게임플레이: 단일 플레이어 기능을 통해 플레이어는 게임 선택 및 재생, 리더보드 보기와 같은 작업을 수행할 수 있습니다. 이러한 기능은 적절한 Lambda 함수를 호출하여 DynamoDB 테이블에서 데이터를 가져오고 설정하는 Amazon API Gateway HTTP API로 호스팅되는 RESTful 백엔드 서비스로 구현됩니다. 게임 플레이가 완료되면 백엔드는 Lambda 함수를 비동기적으로 시작하는 Amazon SNS 주제에도 알림을 보내 플레이어의 진행 상황과 통계를 저장합니다.

  • 멀티플레이어 게임플레이: 멀티플레이어 게임 기능을 사용하려면 플레이어가 point-to-point 통신을 위해 게임과 상호 작용하고 연결된 다른 플레이어로부터 업데이트를 브로드캐스트하고 수신할 수 있어야 합니다. WebSockets 구현은 퀴즈와 같은 경량 게임에서 point-to-point 통신에 적합합니다. 플레이어는 Amazon API Gateway WebSockets에 대한 WebSockets 연결을 설정할 수 있습니다.이 연결은 연결을 관리하고 플레이어에 대해 전송하거나 수신할 메시지가 있는 경우에만 Lambda 함수를 호출합니다. 플레이어 간에 one-to-many 통신이 필요한 사용 사례의 경우는 클라이언트가 주제를 구독하고 수신하는 메시지에 대해 조치를 취할 수 있도록 MQTT를 통해 WebSockets를 사용한 메시징에 대한 지원을 AWS IoT Core 제공합니다. 이 아키텍처에서 MQTT를 통한 WebSockets는 게임 내 라이브 업데이트 브로드캐스트 및 연결된 플레이어에게 질문과 같은 사용 사례를 지원하는 데 사용됩니다. 대신 메시지 전송을 위해 Redis Pub/Sub를 선택하거나 메시지 보존이 필요한 경우 Redis 스트림을 AWS IoT선택할 수 있습니다.

  • VPC 지원 Lambda 함수를 사용하여 프라이빗 서브넷의 리소스에 액세스: 라이브 리더보드와 같이 지연 시간이 짧은 데이터 세트의 쿼리 시간을 줄이는 데 사용되는 Amazon ElastiCache와 같은 VPC의 프라이빗 서브넷에 있는 리소스에 액세스하도록 VPC 지원 Lambda 함수를 구성합니다.

자세한 내용은 사용자 지정 게임 백엔드 호스팅 지침을 참조하세요 AWS.