View a markdown version of this page

정의 - 게임 산업 렌즈

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

정의

AWS Well-Architected Framework는 운영 우수성, 보안, 신뢰성, 성능 효율성, 비용 최적화 및 지속 가능성이라는 6가지 원칙을 기반으로 합니다. AWS 는 게임 워크로드를 위한 state-of-the-art 아키텍처를 설계할 수 있는 여러 핵심 구성 요소를 제공합니다. 이 섹션에서는 키 정의에 대한 개요를 제공합니다.

이 백서의 목적상 게임 아키텍처는 게임을 구축하고 운영하는 데 필요한 백엔드 기술 인프라를 포함합니다. 일부 게임에는 소셜, 멀티플레이어 또는 기타 온라인 기능이 없을 수 있으며이 백엔드 기술 인프라의 특정 측면을 사용할 필요가 없을 수 있습니다. 게임 아키텍처를 지원하기 위해 자주 배포되는 다양한 유형의 워크로드에 대한 자세한 내용은 시나리오를 참조하세요.

AWS 클라우드 인프라는 리전 및 가용 영역을 중심으로 구축됩니다.

  • 리전은 가용 영역이 여러 개인 전 세계의 물리적 위치입니다.

  • 가용 영역은 각각 중복 전원, 네트워킹 및 연결을 갖춘 하나 이상의 개별 데이터 센터로 구성되며 별도의 시설에 보관됩니다.

게임의 특성에 따라 플레이어의 성능 향상과 같은 이유로 게임 아키텍처의 특정 구성 요소를 여러 리전에 배포하거나 위치에 따라 플레이어에게 사용자 지정 경험을 제공할 수 있습니다.

다양한 유형의 게임이 있으며 게임을 지원하는 데 필요한 백엔드 기술 인프라는 개발 중인 게임 유형에 따라 다릅니다. 예를 들어 인기 있는 유형의 게임에는 1인칭 슈팅 게임(FPS), 역할 플레이 게임(RPG), 대규모 멀티플레이어 온라인 게임(MMOG), 배틀 로일(BR), 스포츠 게임, 퍼즐 게임 등이 포함될 수 있습니다. 또한 성능 특성이 서로 다른 턴 기반 및 동시 재생과 같이 게임의 아키텍처에 영향을 미치는 다양한 게임 상호 작용 모드가 있습니다.

게임은 데스크톱, 웹, 모바일, 콘솔, 증강 현실(AR), 가상 현실(VR), 게임 스트리밍 솔루션과 같은 최신 상호 작용 모드를 포함한 하나 이상의 게임 시스템에서 재생되도록 개발되었습니다. 게임은 일반적으로 교차 시스템 게임 플레이를 지원합니다. 즉, 플레이어는 게임 진행 상황을 저장하고 다른 시스템에서 게임 플레이를 재개할 수 있을 뿐만 아니라 다른 시스템의 플레이어와 게임 플레이 세션을 시작할 수 있습니다.

비디오 게임 수익화를 통해 게임 게시자는 광고, 디지털 및 소매 기반 게임 구매, 마이크로트랜잭션이라고 하는 다운로드 가능한 콘텐츠(DLC)의 게임 내 구매, 게임 플레이에 필요한 유료 구독과 같은 다양한 전략을 사용하여 수익을 창출할 수 있습니다. 게임 업계에서 가장 일반적인 핵심 성과 지표(KPIs)는 다음과 같습니다.

  • 일일 활성 사용자(DAU)

  • 월간 활성 사용자(MAU)

  • 동시 사용자(CCU)

  • 세션 지속 시간

  • 설치당 비용(CPI)

  • 플레이어 수명 값(LTV)

  • 사용자당 평균 수익(ARPU)

게임 시스템

비디오 게임은 클라이언트 입력 제어, 그래픽, 클라이언트 소프트웨어(게임 클라이언트라고 함) 및 하드웨어, 경우에 따라 게임 플레이를 지원하는 시스템 전용 기능을 제공하는 게임 시스템에서 재생되도록 개발되었습니다.

게임 시스템은 일반적으로 다음 범주로 구분됩니다.

  • 콘솔: Sony PlayStation, Microsoft Xbox, Nintendo Switch와 같은 인기 있는 예제를 포함하여 게임 플레이용으로 설계된 목적별 엔터테인먼트 시스템입니다. 콘솔은 게임 시스템 공급자가 제조한 콘솔 하드웨어에 물리적 또는 디지털 방식으로 배포된 게임 콘텐츠를 설치하여 게임을 플레이할 수 있는 기능을 제공합니다. 이 정의에서 콘솔은 휴대용 또는 고정형일 수 있으며 홈 엔터테인먼트 시나리오에서 사용하기 위한 것입니다.

  • PC(개인용 컴퓨터): 플레이어가 사용자 지정할 수 있는 클라이언트 머신에 설치된 컴퓨터 소프트웨어를 사용하여 재생되는 게임입니다. 이러한 이유로 PC 게임은 플레이어에게 인기가 높습니다. PC 게임이 제공하는 유연성과 제어 기능 때문입니다.

  • : 웹 브라우저를 사용하여 재생하도록 설계되고 일반적으로 플레이어가 운영 체제에 관계없이 게임에 액세스할 수 있는 이점을 제공하는 게임입니다.

  • 모바일: 일반적으로 스마트폰 운영 체제인 휴대폰에서 재생하도록 개발된 게임입니다. 모바일 게임은 일반적으로 디지털 앱 스토어에서 다운로드되어 휴대폰에 설치됩니다.

앞서 언급한 시스템 외에도 여전히 비교적 새롭고 성장하며 더 지배적인 시스템에 비해 시장 점유율이 훨씬 작은 초기 시스템도 있습니다. 이 범주의 게임 시스템의 예로는 AR, VR 및 게임 스트리밍이 있으며, 이를 클라우드 게임이라고도 합니다.

게임 스트리밍에는 클라우드에서 게임 플레이를 렌더링하고 일반적으로 브라우저인 씬 클라이언트로 스트리밍하는 작업이 포함됩니다. 게임 스트리밍을 통해 플레이어는 일반적으로 게임 스트리밍 서비스 공급자가 클라우드에서 원격으로 호스팅하는 게임을 플레이할 수 있습니다. 게임 스트리밍에서 플레이어는 브라우저 또는 클라우드 게임 서비스 공급자(게임 시스템)가 제공하는 씬 클라이언트를 통해 클라우드 기반 게임에 연결합니다.

게임 서버

게임 서버는 게임에 대한 컴퓨팅 인프라의 가장 중요한 측면 중 하나를 나타냅니다. 전용 게임 서버라고도 하는 게임 서버는 멀티플레이어 게임을 개발할 때 또는 게임 플레이 이벤트의 서버 권한 처리가 필요할 때 사용됩니다. 게임 서버는 게임 아키텍처의 중심에 있으며, 플레이어 및 게임 상태 관리, 연결된 게임 클라이언트와 게임 서버 간의 상호 작용 관리 등 코어 로직이 실행되는 위치 역할을 합니다. 게임 서버는 플레이어의 게임 클라이언트에서 입력을 처리하고 연결된 다른 플레이어에게 실시간으로 적절하게 배포하는 역할을 하므로 일반적으로 게임 아키텍처에서 성능에 가장 민감한 측면 중 하나입니다. 성능이 좋지 않은 게임 서버는 게임 경험의 전반적인 성능에 영향을 미칩니다. 따라서 게임 서버 성능을 최적화하고 특히 게임 시작 또는 피크 게임 플레이 기간에 충분한 용량을 제공해야 합니다.

이 문서의 목적상 게임 서버 또는 게임 서버 인스턴스는 하나 이상의 게임 서버 프로세스를 호스팅하는 가상 머신과 같은 컴퓨팅을 나타냅니다. 게임 서버 프로세스는 플레이어가 플레이어 세션을 통해 연결할 수 있는 실행 중인 게임의 인스턴스인 게임 세션을 호스팅하는 게임 서버 빌드의 단일 인스턴스를 나타냅니다. 이러한 이유로 게임 세션과 호스팅하는 게임 서버 프로세스 간의 묵시적인 일대일 관계로 인해 종종 게임 서버 프로세스 또는 게임 세션을 상호 교환적으로 참조합니다. 에는 컴퓨팅이 게임 서버를 호스팅할 수 있는 AWS여러 옵션이 있으며, 이를 통해 리소스의 탄력적 프로비저닝을 통해 확장 가능한 클라우드 기반 용량에 액세스할 수 있습니다.

Amazon EC2는 여러 버전의 Linux 및 Windows를 지원하는 인스턴스라고 하는 클라우드 기반 가상 서버를 제공합니다. 인스턴스를 생성하고 다른 서버 또는 가상 머신처럼 직접 관리할 수 있습니다. 일반적으로 효율성을 개선하고 비용을 절감하기 위해 여러 게임 서버 프로세스가 인스턴스에 배포됩니다. Amazon EC2는 컴퓨팅 인프라를 가장 잘 제어하려는 게임 서버에 적합합니다.

Amazon GameLift는 클라우드에서 전용 게임 서버 호스팅을 위한 완전관리형 솔루션과 GameLift FlexMatch를 사용한 매치메이킹과 같은 추가 기능을 제공합니다. GameLift는 Amazon EC2를 기반으로 추상화 계층을 제공하여 게임 서버 관리를 간소화하고 대부분의에서 사용할 수 AWS 리전 있으므로 플레이어와 가까운 게임 서버를 호스팅하여 지연 시간을 줄이고 고가용성을 달성하며 스팟 인스턴스를 사용하여 비용을 크게 절감할 수 있습니다. GameLift는 기존 게임 백엔드에 통합할 수 있지만 자체 게임 서버 관리 및 매치메이킹 솔루션을 개발하지 않고에서 관리하고 게임이 성장함에 따라 확장할 AWS 수 있는 솔루션을 선호하는 게임 개발자에게 특히 유용합니다.

Amazon Elastic Container Service(Amazon ECS)는 Docker 기반 컨테이너를 실행하는 데 사용할 수 있는 완전 관리형 컨테이너 오케스트레이션 서비스입니다. Amazon Elastic Kubernetes Service(Amazon EKS)를 사용하여 Kubernetes를 사용하여 빌드된 Docker 기반 컨테이너를 실행할 수도 있습니다. Amazon ECS 및 Amazon EKS에서 제공하는 것과 같은 컨테이너 기술을 사용하면 많은 게임 서버 프로세스 또는 기타 게임 애플리케이션 인스턴스를 EC2 인스턴스에 효율적으로 패킹하여 컴퓨팅 사용률을 개선할 수 있습니다.

컨테이너를 사용하면 개발 중에 로컬 시스템에서 개발자가 사용하는 것과 동일한 Docker 이미지 운영 런타임을 사용하여 애플리케이션을 호스팅하여 개발자 생산성을 높일 수도 있습니다. 컨테이너를 실행하기 위한 서버리스 컴퓨팅 솔루션이며 Amazon EKS 및 Amazon ECS와 호환되는 AWS Fargate를 사용하여 운영 오버헤드를 더욱 줄일 수 있습니다. Fargate는 컨테이너가 실행되는 기본 인스턴스를 운영할 책임 없이 컨테이너에서 게임 서버를 실행하려는 사용 사례에 가장 적합합니다.

AWS Outposts 를 사용하여 데이터 센터 또는 온프레미스 시설에서 AWS 인프라와 서비스를 실행할 수 있습니다. 이를 통해 게임이 온프레미스 환경에서 실행되고 AWS 동일한 인프라를 사용하여 하이브리드 클라우드 채택 전략을 지원할 수 있습니다. AWS 로컬 영역은 게임 서버 및 기타 지연 시간에 민감한 워크로드를 플레이어 또는 개발 팀과 더 가깝게 실행할 수 AWS 리전 있도록 하는의 확장 역할을 합니다. 또한 게임 서버의 글로벌 네트워크 지연 시간을 줄이기 위해 AWS Global Accelerator를 사용하여 게임 서버로의 플레이어 트래픽 성능을 개선할 수 있습니다.

AWS Lambda 는 서버를 프로비저닝하거나 관리하지 않고 코드를 실행하는 서버리스 컴퓨팅 서비스로, 턴 기반 게임이나 간단한 컴퓨팅 요구 사항, 작은 코드베이스가 있고 상태 비저장 마이크로서비스 아키텍처를 사용하여 게임 플레이 기능을 설계할 수 있는 게임 서버 사용 사례에 유용합니다. Lambda 함수는 장기 실행 게임 서버 프로세스를 실행하는 대신 이벤트 기반 요청별로 실행된다는 점에 유의해야 합니다. Lambda는 개발자가 코드를 호스팅하기 위해 선택할 수 있는 기본 애플리케이션을 즉시 사용할 수 있기 때문에이 백서의 옵션에 대한 가장 많은 런타임 추상화를 제공합니다.

게임 서버 호스팅에 대한 접근 방식을 선택할 때 운영 오버헤드, 레거시 코드베이스, 성능 요구 사항 및 규모를 비롯한 다양한 요구 사항을 고려하세요. EC2 인스턴스와 컨테이너는 클라우드로 이동하는 데 가장 작은 변경이 필요하므로 레거시 코드베이스에 적합한 옵션이며, EC2 인스턴스를 사용하여 컴퓨팅 인스턴스의 리소스를 전용으로 사용할 수 있고 컨테이너를 사용하면 관리 및 높은 사용률을 더 간단하게 달성할 수 있습니다. 서버리스 함수는 이벤트에 대한 응답으로만 실행되는 코드를 정의하는 데 사용할 수 있는 최고 수준의 추상화를 제공하므로 비용을 절감할 수 있습니다.

게임 클라이언트

게임 클라이언트는 플레이어가 게임을 플레이하는 데 사용하는 소프트웨어 및 하드웨어 디바이스를 나타냅니다. 게임 클라이언트는 플레이어의 입력을 처리를 위해 서버로 전송되는 메시지로 변환하는 소프트웨어를 제공하며, 서버에서 수신되는 응답을 처리하고 그래픽과 같은 출력을 플레이어에게 렌더링할 책임이 있습니다. 실시간 네트워크 멀티플레이어 게임에서 게임 클라이언트는 일반적으로 게임 플레이 세션 기간 동안 게임 서버에 대한 지속적인 네트워크 연결을 유지하여 네트워크 지연 시간을 줄이고 처리 시간을 최소화합니다. 그러나 게임 클라이언트는 REST를 사용하여 게임 서버 또는 백엔드 서비스와 상호 작용할 수도 있습니다.

메시징

게임에는 일반적으로 세 가지 주요 범주의 메시지가 있습니다. 

  • 게임 초대 또는 푸시 알림과 같은 특정 사용자 또는 사용자 집단을 대상으로 하는 플레이어 참여 메시징

  • 게임 내 채팅과 같은 플레이어 간의 그룹 메시징

  • 둘 이상의 애플리케이션을 통합하는 데 사용되는 JSON 메시지와 같은 Service-to-service 메시징

이러한 유형의 메시지를 보내고 받는 일반적인 전략은 게시자-구독자 및 비동기 처리 아키텍처 패턴을 사용하는 것입니다.는 게임에서 메시징을 구현하는 데 도움이 되는 여러 서비스를 AWS 제공합니다.

  • Amazon Simple Notification Service(SNS): 게시자와 구독자 간에 pub/sub 아키텍처 패턴을 사용하여 메시지를 전송하는 관리형 서비스입니다. 게시자는 API를 사용하여 Amazon SNS는 구독 애플리케이션에 메시지를 비동기적으로 전송하고 가장 널리 사용되는 푸시 알림 서비스 중 일부를 지원하여 모바일 클라이언트 또는 데스크톱에 직접 푸시 알림을 전송할 수 있습니다. Amazon SNS는 클라이언트에 대한 푸시 알림과 service-to-service 메시징 사용 사례에 사용할 수 있습니다.

  • Amazon Simple Queue Service(SQS): 각에서 사용되는 프로그래밍 언어에 관계없이 게임 서버와 게임을 쉽게 통합할 수 있는 완전 관리형 대기열 서비스입니다. 데이터베이스에서 리더보드 또는 재생 시간 값을 업데이트하는 등 백그라운드에서 많은 게임 작업을 분리하고 처리할 수 있습니다. 이 접근 방식은 게임의 다양한 부분을 분리하고 플레이어 대면 기능을 백엔드 처리에서 독립적으로 확장하는 효과적인 방법입니다.

  • Amazon Managed Streaming for Apache Kafka(MSK): 널리 사용되는 오픈 소스 솔루션인 Apache Kafka를 사용하여 데이터 스트리밍 및 생산자 또는 소비자 애플리케이션 구축을 간소화하는 완전 관리형 서비스입니다. Kafka는 일반적으로 실시간 스트리밍 데이터를 수집하고 처리하는 데 사용되며 service-to-service 메시징에 사용할 수 있습니다.

  • Amazon ElastiCache(Redis OSS): 채팅룸 애플리케이션 개발 및 고성능 service-to-service 메시징에 일반적으로 사용되는 Redis의 인기 있는 pub/sub 기능에 대한 지원을 포함하는 완전 관리형 인 메모리 데이터 스토어를 제공합니다. 또한 Redis는 목록 및 세트와 같은 풍부한 데이터 형식을 지원하므로 개발자는 고성능 대기열에 Redis를 사용할 수 있습니다.

  • Amazon Pinpoint: 이메일, SMS, 음성 및 푸시 알림을 통해 사용자 참여 메시징을 제공합니다. 예를 들어 Amazon Pinpoint를 사용하여 플레이어에게 사용자 참여 메시지를 전달하여 게임에 다시 초대하고 다중 인증 토큰, 주문 확인 및 암호 재설정 이메일 지원과 같은 트랜잭션 사용 사례에 사용할 수 있습니다.

라이브 게임 운영(라이브 운영)

라이브 게임 운영(라이브 운영)은 게임을 라이브 서비스로 취급하고 출시된 게임에 새로운 기능, 업데이트, 프로모션, 게임 내 이벤트 및 개선 사항을 지속적으로 제공하여 플레이어 커뮤니티의 경험을 개선하는 게임 관리 및 운영 스타일입니다.

전통적으로 게임은 서비스가 아닌 제품으로 제공되었으며, 새로운 콘텐츠와 기능은 출시된 제품이 아닌 후속 릴리스 또는 시퀀스에 자주 통합되었습니다. 게임 관리에 대한 Live Ops 접근 방식을 사용하면 게임 운영 팀이 실험, 프로모션, 게임 내 이벤트, 혁신을 통해 게임을 시작하고 참여 플레이어 커뮤니티를 유지하여 플레이어가 계속 즐거운 시간을 보낼 수 있습니다.

이 접근 방식은 새로운 플레이어 참여 전략을 잠금 해제하고 반복적인 수익 흐름을 제공한다는 이점이 있지만 더 많은 운영 전문 지식이 필요합니다. 예를 들어 성공적인 Live Ops 전략을 구현하려면 개발자가 클라우드 서비스와 통합하거나 자체 백엔드 기술 인프라를 운영해야 할 수 있습니다. 또한 플레이어 경험에 부정적인 영향을 미칠 수 있는 게임 또는 플레이어 커뮤니티 내에서 발생하는 문제를 식별하고 대응할 수 있는 효과적인 방법이 필요합니다.