×
Community Blog 알리바바 클라우드의 Game Architecture Whitepaper for Infrastructure 소개

알리바바 클라우드의 Game Architecture Whitepaper for Infrastructure 소개

이 블로그를 통해 알리바바 클라우드의 서비스를 이용한 게이밍 인더스트리의 아키텍쳐를 참조할 수 있습니다.

이 문서는 알리바바 클라우드의 서비스를 이용한 게이밍 레퍼런스 아키텍쳐를 제시합니다.

Introduction about Gaming industry

이 솔루션은 알리바바 클라우드 플랫폼에서 게임 인프라를 호스팅하는 데 사용되는 일반적인 구성 요소와 디자인 패턴에 관한 개요를 제시한다.

게임산업은 지난 수십 년 사이에 성공적인 엔터테인먼트 사업으로 진화했다. 또한 광대역 인터넷이 확산되면서 게임 산업의 주요 패턴이 온라인 플레이가 되었다.

온라인 플레이는 세션 기반의 멀티플레이어 매치, 대규모 멀티플레이어 가상 세계, 그리고 싱글플레이어 경험들이 서로 뒤얽힌 형태 등 여러 가지 형태로 제공된다.

과거에는 클라이언트-서버 모델 형태의 인프라 운영을 위해 데이터 센터를 구성한 후, 전용 온프레미스 서버를 구입하여 관리해야 했으므로 대형 스튜디오와 퍼블리셔만 처리할 수 있는 형태였다. 또한 사전에 구성된 하드웨어를 이용하여 고객의 리퀘스트를 모두 처리하기 위해서 광범위한 예측이 요구되었다.

오늘날의 클라우드 기반 컴퓨팅 리소스 환경에서는 규모에 상관없이 모든 게임 기획자와 개발자가 필요한 모든 리소스를 요청하여 받을 수 있으므로 과다한 초기 경비 지출을 줄일 수 있으며 리퀘스트가 폭증했을 때 인프라가 받아주지 못하는 이슈를 줄이는데 도움을 줄 수 있다. 이것은 사업적으로도 CAPEX 기반의 운영에서 OPEX 기반의 운영으로 변화하는 것이므로 리스크를 많이 줄일 수 있다.

일반적으로 하나의 게임이 운영되기까지의 프로세스는 다음과 같다.

1

기존에는 기획-개발부터 운영까지의 프로세스를 일련의 시간의 흐름대로 진행하는 Waterfall 형태의 프로세스를 유지했으나 지금은 작은 모듈 단위로 기획, 개발하고 일정 시간 단위(분기, 반기)마다 리뷰를 하면서 출시될 게임의 품질을 사업적으로 판단하는 Agile 형태의 프로세스가 운영되고 있다.

최근에는 다양한 형태의 클라이언트(PC, Mobile, Console)을 이용하여 사용자가 온라인 게임을 유지하면서 인프라 환경에 대해 아래와 같은 매우 엄격한 요구조건과 Challenge를 제시하고 있다.

1. Lag, Latency

한국의 유저들은 게임을 즐기다가 게임에 지연이 생기면 이렇게 말한다. “렉 걸렸다.” 이 “렉 걸림” 현상을 우리 IT용어로 해석하자면 “Latency가 생겼다”로 볼 수 있다.

게임의 Latency는 네트워크만의 문제로 해석할 수 없다. 예를 들어 네트워크 환경을 비교적 많이 사용하지 않는 오프라인 싱글 플레이어 게임에도 지연이 발생할 수 있다.

몇 가지 잠재적인 원인은 다음과 같다.

  • 결함이 있거나 노후된 기계식 하드 드라이브(디스크 대기 시간)
  • 응답 시간이 느린 모니터, 비디오카드(비디오 대기 시간)
  • 일치하지 않거나 잘못 구성된 메모리(RAM 대기 시간)
  • 느린 CPU연산 (CPU 대기 시간)
  • 비효율적인 코드로 최적화되지 않은 게임 (소프트웨어 지연 시간)
  • 길고 복잡한 통신 라우트 (네트워크 지연 시간)

이러한 문제점은 클라우드 서버 하드웨어 유지, 관리 및 업그레이드를 진행함으로써 해결될 수 있다.

클라우드 서비스는 고객에게 다양한 형태의 인프라 서비스를 제공하고 고객에게 더 짧고 효율적인 네트워크 경로를 제공하기 위해 더 많은 엣지 서버를 제공한다. 또한 서비스에 최적화된 클라이언트 하드웨어를 제공하거나 고객이 원하는 형태의 하드웨어를 제공할 수 있도록 다양한 벤더의 하드웨어 라인업을 제공한다.

2. Network Performance

온라인 게임 환경에서 네트워크 품질은 가장 중요한 요소이다. 기본적으로 유저가 트러블 없이 게임을 즐기기 위해서 유저의 뇌에서 인지하지 못할 만큼의 네트워크 지연만 허용할 수 있다.

연구 논문에서는 많은 게임의 최대 네트워크 지연이 200ms를 넘지 않아야 하며

슈팅 게임과 격투 게임은 빠른 반사 신경과 빠른 동작이 필요하기 때문에 100ms 미만의 대기 시간을 가져야 한다고 가정한다.

월드 오브 워크래프트와 같은 롤 플레잉 게임의 대기 시간은 500ms를 넘지 않아야 한다. 이러한 게임에는 총알 발사 같은 즉시 트리거 반응 시간이 필요하지 않지만 게임 세계관 안에서 이벤트에 반응하고 스킬 또는 주문 시전과 같은 작업을 안정적으로 수행하기 위해서 네트워크 품질을 강화해야 한다.

모바일 게임의 대부분 형태인 비동기식 싱글 플레이 게임 방식은 최대 1000ms의 대기 시간이 허용된다. 유저는 일반적으로 Status를 변화하고 유지하는 것에 있어서 로컬 환경으로만 관심을 가지기 때문에 네트워크 품질에 있어서 다른 게임 형태보다 관대하다.

그러나 이것은 일반적인 사항이며, 사람에 따라 지연 시간 증가에 더 민감할 수 있다.

3. Quality of Service

유저는 게임의 좋은 서비스를 체험하기 위해 항상 서비스의 품질을 판단한다. 이 서비스 품질은 단순히 네트워크나 하드웨어 성능을 높이는 것 만으로 개선할 수 없다.

다음은 클라우드 게임 서비스 제공업체가 고려해야 하는 몇 가지 주요 요소이다.

  • 그래픽 품질

최신의 게임은 매우 뛰어난 그래픽 인터페이스를 제공하고 있다. 심지어는 4K 환경에서도 픽셀이 깨지지 않고 매끄럽게 재생될 수 있을 만큼의 그래픽 인프라 환경을 요구한다. 이 요구사항을 만족시키기 위해 뛰어난 성능을 가진 그래픽 카드를 내장한 파워풀한 인스턴스 노드와 비디오 스트림 서비스의 일관성을 보장하기 위해 견고한 네트워크 백본을 제공해야 한다.

  • 게임 서버의 응답 시간

바로 직전에 서술했지만 가장 중요한 품질은 게임 서버의 응답시간이다. 여러 지역에 분포되어있는 유저를 상대하는 글로벌 게임 서비스라면 게임 서버를 전 세계에 배포하여 지연 시간을 줄이고 중복성을 추가해야한다. 또한 악성 공격으로부터 서비스 품질을 낮추는 것을 방지하기 위하여 게임 클라이언트의 행동을 서버에서 검증하여 악용 또는 부정행위로부터 보호하는 로직이 필요하다.

  • 제로 다운타임

게임 유저는 게임 다운 타임이 0에 가까워 지길 기대한다. 이 말은 사용자의 세션이 저장되어있는 개별 서버 인스턴스를 외부 영향으로부터 보호해야한다는 뜻이다.

이를 위해 게임은 하나의 게임-서버 프로세스에 플레이어 상태를 유지하는 것이 좋다. 이 것을 “Sticky Session”이라고 표현한다. 이렇게 되면 서버 프로세스 충돌 시의 장애 복구와 효과적인 부하 분사 등 많은 이점이 있다.

Prerequisite

이전 챕터에서 언급한 것과 같이 현재의 게임 산업에서 요구하는 사항들은 클라우드가 아니면 만족하기 어렵다.

클라우드 서비스 공급자는 방대한 인프라를 이용해서 많은 리소스를 사용할 수 있으며 사용자에 대한 제약을 두지 않는다.

또한 이 리소스는 탄력적이다. 리소스의 일부만을 사용하거나 또는 필요한 만큼 넘치게 사용할 수 있다. 클라우드 플랫폼에 구성된 인스턴스는 요구 사항에 맞게 자동으로 확장 또는 축소된다. 더 많은 처리 능력이나 스토리지가 필요할 때마다 하드웨어를 지속적으로 업그레이드할 필요가 없다.

주요 클라우드 서비스 제공업체는 일반적으로 전 세계에 많은 서버를 보유하고 있으므로 단일 지역에 얽매이지 않는다.

특히 클라우드는 게임 서비스 플레이어에게 다음과 같은 이점을 제공한다.

  • Network Acceleration

다중 지역 간 가속화된 네트워크와 텍스처, UI, 오디오, 사운드 및 특수 효과와 같은 콘텐츠에 대한 가속화된 콘텐츠 배포를 제공

  • High Concurrence

높은 클럭 속도의 CPU 인스턴스 또는 GPU 인스턴스로 최소 지연 시간을 보장하면서 여러 동시 사용자를 허용

  • Multi-Level Game Security

다계층 보안(네트워크, 애플리케이션, 세션, 하드웨어) 및 안전한 연결로 데이터 보안을 보장

  • Dedicated Regional Databases

고성능 데이터베이스, 자동 장애 조치 및 재해 복구를 제공하여SPOF(Single point of failure)를 제거

위와 같은 장점을 지닌 알리바바 클라우드는 아래 서비스들을 이용하여 게임 산업에 최적화된 표준 아키텍쳐를 제공한다.

  • ECS: 기본적인 가상화 서버로 CPU, GPU, FPGA(알리바바 클라우드의 GPU), High Memory 등 다양한 형태의 인스턴스를 제공
  • ACK: 컨테이너를 관리를 위한 오케스트레이터인 Kubernetes 서비스
  • Function Compute: Serverless 환경에서 워크로드를 실행하기 위한 서비스
  • SLB: 인스턴스 트래픽의 부하 분산을 위한 LB 서비스로 L4/L7 레이어 부하 분산을 모두 제공
  • DCDN: 정적, 동적 컨텐츠를 모두 가속화할 수 있는 CDN 서비스
  • OSS: Object Storage를 제공하는 서비스로 비용 효율적으로 뛰어난 성능의 스토리지를 이용 가능
  • Anti-DDoS: DDoS 공격을 방어하는 보안 서비스
  • WAF: 애플리케이션 레이어 공격을 방어하는 서비스로 AI 봇을 내장하여 지능적으로 공격을 탐지하고 방어
  • Cloud Firewall: 네트워크 레이어 공격을 방어하는 보안 서비스
  • API Gateway: API 통신을 제어하고 라우팅하는 서비스
  • NAT: 네트워크가 차단된 환경에서 퍼블릭 네트워크와 통신할 수 있도록 기능을 제공하는 게이트웨이 서비스
  • Cloud Monitor: 알리바바 클라우드 환경에 구성된 모든 서비스와 워크로드를 모니터링 할 수 있는 통합 모니터링 서비스
  • ACR: 컨테이너 환경에서 사용하는 이미지 관리를 위한 이미지 레지스트리 서비스
  • RAM: 알리바바 클라우드 환경에서 사용하는 사용자, 그룹, 권한 관리를 위한 서비스
  • SLS: 각 서비스에서 발생하는 애플리케이션, 인프라 로그를 관리하는 서비스
  • Redis: Object 단위의 캐시를 제공하는 서비스
  • SMS: 세계 각 지역의 사용자에게 Short Message를 보낼 수 있는 서비스
  • PolarDB: 알리바바 클라우드가 자체적으로 엔지니어링한 DBMS로 효율적이고 안정적인 데이터베이스 서비스를 제공
  • RDS: 오픈소스 데이터베이스들을 리디자인한 알리바바 클라우드의 DBMS
  • MongoDB: NoSQL형태의 데이터를 저장하기 위한 서비스
  • DTS: RDBMS, NoSQL 데이터베이스 및 데이터 웨어하우스와 같은 데이터 저장소 간의 마이그레이션을 도와주는 서비스
  • AnalyticDB: 데이터베이스와 빅데이터 기술을 통합한 클라우드 네이티브 데이터 웨어하우징 서비스
  • DMS: 다종의 RDBMS를 중앙 집중식으로 관리할 수 있도록 기능을 제공하는 서비스
  • Dataworks: 알리바바 클라우드의 빅데이터 서비스를 제어하는 PaaS
  • QuickBI: 클라우드 네이티브 형태의 Business Intelligence 서비스
  • DataV: 빅데이터 시각화를 위한 대시보드 서비스

다음 챕터에서 알리바바 클라우드의 서비스를 이용하여 게이밍 서비스를 쉽게 기획, 개발, 운영할 수 있는 레퍼런스 아키텍쳐에 대해서 소개하겠다.

Reference Architecture

2

Solution

1. Frontend

프런트엔드의 일반적인 명칭은 플랫폼 서비스 또는 온라인 서비스다. 플랫폼 서비스는 필수적인 게임 기능을 위한 인터페이스 즉, 플레이어가 동일한 게임 서버 인스턴스에 참가하도록 허용 하거나 게임에서 ‘친구 목록’ 소셜 그래프를 담고 있는 인터페이스를 제공한다. 일반적으로 이 서비스는 온라인게임에 접속할 때 클라이언트로 많이 이용된다. 이 서비스에는 아래와 같은 요소들이 포함된다.

  • 리더 보드 / 경기 기록 / 온라인 로비 / 채팅 / 인벤토리 / 프로필 / 길드 / 상태

일반적으로 유저는 프런트엔드 서비스를 통해 백엔드와 통신을 하는 것이 일반적이다.

그러나 프런트엔드 서비스는 인터넷과 통신할 수 있기 때문에 다양한 공격에 노출될 가능성이 있다. 이러한 보안 이슈를 해결하는 데 도움이 되도록 DDoS와 다양한 네트워크 공격 패턴에 대비해 보안 서비스를 이용하여 반드시 강화해야 한다.

아키텍쳐 설명

A. VPC를 개발 / 테스트 / 운영으로 구분 지었다. 안정적인 개발-배포 프로세스를 위해 각 개발 단계에 따른 프로세스를 구분하여 안정성을 강화할 수 있다.

B. SLB를 이용하여 서비스 Ingress traffic을 로드밸런싱 할 수 있다. 이 SLB서비스는 애플리케이션의 부하 분산을 위한 ALB, 네트워크의 부하 분산을 위한 CLB의 역할을 모두 수행할 수 있다.

C. 각 게임 서비스는 ECS로 배치한다. 알리바바 클라우드 ECS는 매우 가볍고 배포가 빠른 것이 특징이다. 우리는 게임서비스에 접속하는 유저들의 세션을 유지하기 위하여 인스턴스를 이용하여 안정성과 확장성을 모두 얻을 수 있다.

2. Backend

백엔드 서비스는 보통 외부에 노출되는 네트워크 경로 및 IP 주소가 없고 프런트엔드 및 다른 백엔드 서비스에만 인터페이스를 제공한다. 그 이유로 외부 클라이언트는 백엔드 서비스와 직접 통신할 수 없다.

백엔드에는 일반적으로 데이터베이스의 게임 상태 데이터 또는 데이터 웨어하우스의 및 분석 이벤트와 같은 데이터와 직접적으로 연결하는 서비스를 배치한다.

게임의 인기가 높아짐에 따라 규모를 쉽게 확장할 수 있도록 상태 비저장 프로토콜을 활용할 수 있다. 대부분의 게임 기능(게임 실행, 종료 등)을 위한 HTTP/JSON API를 생성하면 인스턴스를 동적으로 추가하고 일시적인 네트워크 이슈에서 쉽게 벗어날 수 있다.

아키텍쳐 설명

A. 위 아키텍쳐에서 인스턴스 타입에 대해서는 표기하지 않았다. 하지만 대부분 게임 인더스트리에서는 그래픽 랜더링을 위해 GPU 인스턴스를 주로 사용한다. 알리바바 클라우드는 다른 플랫폼에 비해 성능이 좋고 비교적 저렴한 GPU 인스턴스를 제공한다. 또한 NPC, 가상 유저 AI 등의 기능 구현을 위해 ML을 이용하는 게임 컴퍼니라면 소프트웨어 로직으로 ML 학습을 20%이상 가속화할 수 있는 AIACC를 이용할 수 있다.

B. 서비스의 형태에 따라, 백엔드에 위치한 서비스도 외부와 통신할 경우가 생길 수 있다. 이러한 경우를 대비하여 백엔드 VPC에도 Public subnet을 배치하여 NAT gateway를 이용한 안전한 인터넷 통신을 구현할 수 있다.

C. 위에서 잠깐 언급한 상태 비저장 프로토콜을 구현하기 위해 알리바바 클라우드의 Serverless 서비스인 Function Compute를 이용할 수 있다. 우리는 더 유연하고 확장성이 좋은 환경을 만들기 위해 게임 접속, 해제, 실행, 종료 등의 일회성 워크로드들을 FC를 이용하여 DB, OSS와 연결된 로직으로 구현할 수 있다.

D. 최근 구현되는 많은 게임들 중 확장성을 중시하는 모듈은 대부분 컨테이너 환경으로 구현된다. 알리바바 클라우드에서는 컨테이너를 효율적으로 관리할 수 있는 Kubernetes 환경을 ACK 서비스에서 제공한다. 우리는 ACK의 기반을 CPU, GPU, High Memory 등 다양한 형태의 인스턴스를 이용하여 효율적으로 구성할 수 있다.

E. 우리는 백엔드 환경에 OSS 버킷을 생성해야한다. 이 OSS 버킷은 패치, 레벨 및 인벤토리와 같은 바이너리 게임 콘텐츠를 저장한다. OSS는 데이터 업로드 및 다운로드에API를 사용한다. 또한 OSS는 파일 스토리지나 공유 스토리지로 이용할 수 있어 다양한 워크로드에서 필요한 상태 저장을 비용 효율적으로 처리할 수 있다.

3. 네트워크, 보안

클라우드 환경에서 네트워크와 보안은 가장 중요한 요소 중 하나이다.

기존 온프레미스 환경에서 운영할 때는, 망분리 아키텍쳐를 유지하기 쉬웠으며 네트워크 토폴로지 유지, 다계층 보안을 사용하기 용이했다.

그러나 현재 클라우드 환경은 기본적으로 클라우드 네이티브 네트워크와 보안이 고려되어야 한다. 특히 집중적으로 고려해야하는 점은 아래와 같다.

  • VPC 분리 : 보안의 측면에서 프런트엔드와 백엔드에서 사용할 Dev / Test / Prod 프로세스는 VPC로 분리되어야 한다. 또한 통합 모니터링, 로깅을 구현하기 위해 관리용 VPC를 따로 구성하여 각 Management 서비스로 중앙 집중식 관리를 구현할 수 있다.
  • 계정 및 권한 관리 : 여러가지 게임 프로젝트를 각각 VPC로 분할된 별도의 RAM 계정으로 할당하면 비용 및 매트릭이 자동으로 분리되어 분석이 쉬워질 수 있다. 또한 프로덕션 및 비프로덕션 VPC를 관리하기 위해 게임당 여러 계정 및 권한을 부여할 수 있다.
  • 다중 지역 : 여러 지역에 게임을 배포하면 전 세계 사용자에게 가장 짧은 지연 시간이 보장된다. 예를 들어 아시아의 유저를 위해 필리핀, 싱가포르 리전에 서비스를 구현하면 사용자의 접근성이 강화된다. 더 나아가 해당 지역의 VPC에 해당 사용자를 위한 게임 애플리케이션을 추가하면 사용자 경험이 더욱 향상되는 것을 볼 수 있다.

특히 보안의 측면에서 알리바바 클라우드는 다계층의 보안을 위한 서비스를 제공하고 있다. 서비스 리스트는 아래 그림에서 확인할 수 있다.

3

아키텍쳐 설명

A. 우리는 네트워크 보안을 위해 3가지 서비스를 이용할 수 있다.

먼저, 대부분의 온라인 게임 서비스는 다른 인더스트리에 비해 많은 DDoS 공격을 받는다. 대규모 트래픽 공격을 서비스에 영향없이 방어하기 위해, 많은 트래픽을 처리할 수 있는 Anti-DDoS가 필수 구성 요소이다.

다음으로, 우리는 DDoS를 방지하더라도, 애플리케이션 레이어의 공격의 위험에 여전히 노출 되어있다. 특히, OWASP Top 10 공격은 매년 패턴이 변하고 있으며 더욱더 위협적인 공격으로 진화하고 있다. 이러한 위협으로부터 벗어나기위해 WAF를 구성할 수 있다. WAF는 기본적으로 현존하는 애플리케이션 Top level을 공격하는 것은 물론, AI 기능을 탑재하고 있어 지속적으로 변화하는 공격 형태에 대해 성공적으로 방어할 수 있다.

마지막으로, 가장 위협적인DDoS와 애플리케이션 공격을 성공적으로 방어하더라도, 가장 기본적인 네트워크 레벨에 대한 공격에 대한 위협이 여전히 존재한다. 우리는 기본적인 L4 방화벽인 Cloud Firewall을 이용하여 North-South / West-East bound 네트워크 방화벽을 구성할 수 있다.

B. 백엔드에 구성한 워크로드 중, 상태 비저장 프로토콜을 구성하기 위해 우리는 Function Compute를 이용한 Severless 워크로드를 구현했다. 이 Function Compute는 HTML/JSON API 형태로 콜이 되도록 구성되어 오픈된 API에 대한 관리가 필요하다.

우리는 API를 관리하기 위해 API Gateway 서비스를 이용할 수 있다. API Gateway는 API에 대한 버전, 권한을 관리할 수 있으며 전체 트래픽에 대한 모니터링을 수행할 수 있다.

C. 게임의 그래픽 품질이 좋아지고, 컨텐츠가 늘어나면서 점점 더 설치를 위한 용량은 거대해지고 있다. 현재는 대부분의 PC 게임이 50GB가 넘는 용량을 가지고 있으며 이를 다운로드 받고 설치하기 위해 유저는 많은 시간을 소모한다.

특히 최근에는 “확장팩”으로 표현할 수 있는 다운로드 가능한 콘텐츠(DLC)가 주요 수익원으로 되고 있다. 사용자는 게임이 출시된 후 몇 년은 아니더라도 몇 달 동안 계속해서 새로운 캐릭터, 레벨 및 퀘스트를 기대하고있다. 이 콘텐츠를 빠르고 비용 효율적으로 전달할 수 있는 DLC는 게임 산업의 수익성에 큰 영향을 미치고있다.

게임 클라이언트 자체는 일반적으로 특정 플랫폼의 앱 스토어를 통해 배포되지만 새로운 레벨을 제공하기 위해 게임의 새 버전을 업데이트하는 것은 번거롭고 시간이 많이 소요될 수 있다.

이와 같은 컨텐츠를 다수의 클라이언트(예: 게임 패치, 확장 또는 베타)에 배포하는 경우 직접적으로 스토리에 접근하는 방법보다 DCDN을 이용하는 것이 효율적이다. DCDN은 정적인 바이너리 파일 뿐만 아니라 동적인 컨텐츠도 쉽게 가속화 할 수 있어 효용성이 매우 높다. 우리는 이 DCDN의 백엔드에 OSS 버킷을 만들어 비용 효율적으로 바이너리 컨텐츠를 클라이언트에 전달할 수 있다.

4. 데이터베이스

게임 세계 상태와 플레이어의 게임 진행 데이터를 저장하는 데이터베이스는 게임 인프라에서 가장 중요한 요소이다.

데이터베이스는 보통의 상황에 대한 예상 작업 부하를 처리하는 용량 뿐 아니라 게임이 큰 성공을 거두었을 때 필요한 작업 부하까지도 계획해야한다. 예상되는 플레이어 수를 기반으로 설계되고 테스트되었으나 갑자기 훨씬 더 큰 부하로 데이터베이스에 문제가 생겼을 때 플레이어 게임을 플레이할 수 없게 되어 전체적인 비즈니스가 무너질 수 있다. 그렇기 때문에 게임 산업에서 데이터베이스 설계는 가장 중요하게 다뤄져야 한다.

수평으로 확장되는 애플리케이션의 출현은 애플리케이션 계층과 관계형 데이터베이스의 기존 접근 방식을 변화시켰다. 기존 ACID(Atomicity, Consistency, Isolation, Durability) 개념을 피하고 경량 인스턴스, 분산 스토리지를 선호하는 많은 새로운 데이터베이스가 대중화되었다. 이러한 NoSQL 데이터베이스는 데이터 구조가 복잡한 관계형 데이터가 아닌 단순한 캐릭터 특성, 아이템, 게임 구조를 지닌 인스턴트 게임에 어울릴 것이다.

일반적으로 온라인 게임의 가장 큰 Bottleneck은 데이터베이스 성능이다. 일반적인 웹 기반 앱은 읽기 횟수가 많고 쓰기 횟수가 적다. 그러나 게임은 정반대이다. 게임의 지속적인 상태 변경으로 인해 데이터베이스에 읽기 및 쓰기가 자주 충돌한다. 이 특성을 고려하여 반드시 데이터베이스 종류 및 형태에 대한 설계가 되어야한다.

아키텍쳐 설명

A. MMORPG 같은 세계관이 크고 다루는 데이터의 종류가 많은 게임은 관계형 데이터베이스를 메인 스트림으로 사용해야한다. 관계형 데이터베이스는 전통적인 형식의 안정적인 데이터 관리를 제공할 수 있다.

기존의 관계형 데이터베이스는 수직 확장에 집중한다. 그러나 실행 중인 데이터베이스에 다운타임 없이 스키마를 추가하기는 어려울 수 있다. 우리는 이러한 안정성과 사용 편의성, 확장성을 모두 얻기 위해 알리바바 클라우드의 PolarDB와 RDS를 이용할 수 있다. 기존에 사용하던 데이터 구조를 유지하되 클라우드 네이티브의 이점을 가져가고 싶을 때 아주 좋은 선택이 될 수 있다.

B. NoSQL은 쓰기가 많은 작업 부하에 확장성 있는 운영을 위한 솔루션을 제공할 수 있다. 단, NoSQL 데이터 모델과 액세스 패턴, 그리고 트랜잭션 보장에 대해 이해해야 한다.

특히 이 NoSQL은 수평 확장을 염두에 두고 설계되었다. 클러스터에 대한 크기 조정은 일반적으로 다운타임 없이 수행될 수 있는 작업이지만, 때로는 추가 노드가 완전히 통합될 때까지 어느 정도의 성능 손실이 발생하기도 한다.

알리바바 클라우드의 MongoDB서비스는 문서 지향 데이터베이스다. 즉, 데이터는 일반적인 프로그래밍에서 사용하는 구조와 유사한 중첩 데이터 구조에 저장된다.

MongoDB는 게임의 기본 데이터 저장소로 널리 사용되며Redis와 함께 자주 사용된다. 일시적인 게임 세션은 Redis에 보관된 다음 진행 상황이 특정 논리적인 지점(자동 저장, 체크포인트)에서 MongoDB에 저장된다. Redis는 지연 시간에 민감한 게임 데이터에 대한 고속 액세스를 제공하고 MongoDB는 단순화된 지속성을 제공한다.

5. 분석 영역

분석은 오늘날 게임에서 중요한 구성요소로 발전했다. 온라인 서비스와 게임 클라이언트 모두 분석 이벤트를 중앙 집중형 데이터베이스에 저장할 수 있다. 그 다음, 프로그래머와 디자이너에서부터 비즈니스 인텔리전스 분석가와 서비스 담당자까지 모든 사람이 이러한 이벤트를 쿼리할 수 있다. 수집되는 분석 자료의 복잡성이 증가함에 따라, 이러한 이벤트를 쉽고 빠르게 쿼리할 수 있는 아키텍쳐를 유지할 필요가 있다.

알리바바 클라우드는 아래와 같은 토폴로지로 각 서비스 데이터를 이용한 분석, 관리, 모니터링을 제공한다.

아키텍쳐 설명

4

A. PolarDB, RDS에 저장되는 데이터는 DTS로 AnalyticDB Data Warehouse로 빠르게 마이그레이션 할 수 있다.

B. 로그 데이터는 알리바바 클라우드의 Log Service로 OSS에 저장할 수 있다. 저장된 데이터는 ETL과 데이터 분석을 위해 DLA 서비스를 이용할 수 있다. 이 데이터를 Data Lake로 구성하여 유지 관리하는 데 이점을 취할 수 있다.

C. 데이터레이크, DB에서 마이그레이션 데이터는 각각 유형에 맞는 AnalyticDB서비스로 데이터를 Low Latency, High Concurrency 환경에서 분석할 수 있다.

D. 데이터가 저장된 AnalyticDB는 DMS와 DataWorks를 이용하여 효율적으로 관리할 수 있다. 또한 QuickBI와 DataV를 이용하여 데이터에 대한 대시보드를 구성하거나 관제 운영을 할 수 있다.

6. Management, Security, Cost Optimization

위에서 구성한 알리바바 클라우드 서비스를 이용해 구성한 전체 아키텍쳐는 모두 클라우드 환경에서 관리되며 운영된다. 우리는 이 클라우드의 이점을 운영의 측면에서 충분히 이용할 필요가 있다.

아키텍쳐 설명

A. 우리의 과거 온프레미스 환경에 대한 모니터링과 로깅은 단순히 고정되어 있는 환경을 운영자가 직관적으로 볼 수 있도록 기능을 제공하면 됐었다. 하지만 클라우드 환경의 인스턴스는 계속해서 늘어났다 줄어들며 외부로 노출되는 IP가 없을 수도 있으며 심지어는 서버가 이벤트에 따라 생성되었다 바로 사라질 수 있다. 이러한 환경에서 클라우드 모니터링, 로깅은 Dynamic Configuration이 가장 중요한 기능이 되었다.

알리바바 클라우드는 Cloud Monitor 서비스로 전체 워크로드에 대한 인프라, 애플리케이션 모니터링을 수행할 수 있다. 또한 문제가 생겼을 때 운영자가 즉각적으로 반응하도록 알람을 보낼 수 있다.

또한 SLS 서비스를 이용하여 모든 서비스에 대한 로그를 수집하고 분석, 모니터링 할 수 있다.

B. 백엔드 영역을 살펴보면 대부분의 핵심 게임 기능은 컨테이너로 구성된다. 컨테이너는 반드시 컨테이너 이미지로부터 만들어지며 기업은 이 중요한 이미지를 반드시 관리해야한다.

알리바바 클라우드에서는 컨테이너 이미지 관리를 위해 ACR 서비스를 제공한다. 운영자는 ACR을 이용하여 컨테이너 이미지 버전을 관리하고, 접근 권한을 제어할 수 있다. 또한 Image vulnerability scanning 기능을 이용하여 베이스 이미지에 대한 보안을 강화할 수 있다.

C. 지금까지 구성된 환경을 살펴보면 각 Dev/Test/Prod에 각각 다르게 구성된 VPC와 다양한 서비스에 접근하기 위한 다계층의 접근권한 관리가 필요하다.

알리바바 클라우드 RAM 서비스는 계정에 대한 접근 권한, Role, Group 관리를 제공하며 각 API, 서비스간 연결에서의 Access control을 수행한다. 이 서비스를 이용하여 게임 시스템을 운영하는 운영자는 RAM을 이용하여 서비스에 대한 접속, 서비스간 연결에 대한 관리를 효율적으로 수행할 수 있다.

D. 게임 서비스에서 가장 중요한 토픽을 뽑자면 당연히 퍼포먼스를 이야기 할 수 있다.

플레이어가 자신의 캐릭터의 정보 보기를 클릭하고 데이터를 확인할 때까지의 네트워크 단계를 모두 확인해보면 데이터베이스 접근에서 가장 많은 시간이 걸리는 것을 볼 수 있다.

우리는 데이터를 읽어오는 프로세스를 가속화하기 위하여 알리바바 클라우드의 Redis 서비스를 이용할 수 있다. Redis는 고속의 텍스트 기반 프로토콜을 사용하여 액세스하는 카운터, 목록, 집합 및 해시와 같은 기본 데이터 유형을 제공한다. 이러한 고유한 데이터 유형으로 인해 Redis는 순위, 목록, 플레이어 수, 통계, 인벤토리 및 단순한 데이터에 매우 이상적인 선택이다.

E. 온라인 게임 서비스를 제공하다 보면 전 세계의 플레이어에게 가입을 위한 OTP인증, 이벤트를 위한 모바일 Push 같은 문자 메시지를 보내야할 경우가 생긴다. 물론 과거의 방식대로 각 나라의 문자 메시지를 제공하는 통신 사업자와 계약으로 SMS를 보낼 수 있으나, 이 방법은 복잡한 프로세스가 필수적이다.

알리바바 클라우드는 SMS서비스를 이용하여 이미 전세계 각 나라의 통신 사업자와 구성한 Communication 채널을 이용하여 쉽게 SMS를 보낼 수 있도록 기능을 제공하고 있다.

F. 알리바바 클라우드를 사용하면 더 이상 하드웨어, 소프트웨어 라이선스 구매 같은 값비싼 인프라를 구축하는데 리소스를 낭비할 필요가 없다. 알리바바 클라우드는 초기 비용을 더 낮은 운영 비용으로 전환하며 리소스를 사용한 만큼만의 비용만 지불할 수 있다.

운영자는 인스턴스를 구매할 때 Reserved Instance나 Spot Instance를 구매하여 비용을 절약할 수 있으며 Saving Plan을 이용하여 각 서비스에 대한 사용료를 줄일 수 있다.

How to Acquire The Advantage from Alibaba Cloud

지금까지 알리바바 클라우드의 서비스와 솔루션을 이용하여 게임 산업에 적용할 수 있는 Reference Architecture를 소개하였다.

알리바바 클라우드는 세계의 여러 나라의 서비스를 위하여 안정적이고 빠른 인프라 플랫폼을 제공한다. 또한 아래와 같은 이점을 이용하여 특히 게임 산업의 발전에 많은 기여를 하고 있다.

5

만약 이 글을 읽고있는 분이 클라우드 네이티브 게임 서비스를 개발과 운영을 고민하고 있는 담당자라면, 이 Whitepaper가 효율적인 아키텍쳐를 구성하는 데 도움이 되었으면 좋겠습니다.

본 아키텍쳐에 대한 궁금한 점이 있거나 컨설팅을 원하신다면 cloudkorea@list.alibaba-inc.com으로 메일 주시기 바랍니다.

0 0 0
Share on

JJ Lim

13 posts | 2 followers

You may also like

Comments

JJ Lim

13 posts | 2 followers

Related Products