1. 게임 산업 현황

전 세계 게임 시장은 2020년에 전년 대비 7.3% 증가하여 1,600억 달러 이상의 매출을 올릴 것으로 예상되었다. 특히, 중동, 북아프리카, 인도 및 동남아시아와 같은 신흥 시장에서 두 자리 수의 가파른 성장률을 이어갈 것으로 전문가들은 예측했다. 특히 근래의 COVID-19 상황으로 인해 비디오 게임의 수요는 더욱 증가하고 있다.

(관련기사1) 코로나 바이러스 상황으로 인해 비디오 게임의 수요는 더욱 증가하고 있다.
(출처: https://finance.yahoo.com/news/coronavirus-world-turning-to-video-games-150704969.html)

(관련기사2) 이탈리아 어린이들의 게임 플레이로 인해 이탈리아 트래픽이 급증하였다.(출처: https://www.forbes.com/sites/paultassi/2020/03/13/fortnite-and-call-of-duty-straining-italian-internet-as-coronavirus-keeps-kids-home/#238cf660357e)

이러한 산업 전반의 호재에도 불구하고, 70%의 비디오 게임 회사는 치열한 경쟁과 비용 상승에 대한 압박으로 인해 시장 출시 기간, 운영 효율성 향상 등 마진 관련 요소의 개선을 다각적으로 검토하고 있는 상황이다.

MongoDB는 게임 산업계의 이러한 마진 압박에 대한 하나의 솔루션으로써 게임 개발/운영 과정의 효율성을 제고하는 MongoDB의 장점과 사용 사례를 공유하고자 한다.

(* MongoDB는 이미 포춘 500대 기업, 글로벌 500대 기업 내 10개의 주요 미디어 및 엔터테인먼트 회사를 대상으로 서비스를 제공하고 있다.)

2. 게임 개발에 필요한 MongoDB

2.1. Tencent가 MongoDB를 선택한 이유

아래의 4가지 이유가 있다고 한다.

  1. 유연한 개발 요구 사항 충족
  2. 주변 플레이어 지원
  3. 운영 데이터 분석 지원
  4. 작은 게임 개발을 위한 Node.js 지원

각 이유에 대한 설명은 아래와 같다.

유연한 개발 요구 사항을 충족 가능

주 단위로 잦은 배포 및 변경을 하는 경우가 많은데, 개발자가 데이터베이스의 스키마를 변경해야하는 경우가 발생하기 쉬우며 이로 인한 개발 지연 시간이 발생한다.

→ mongoDB의 데이터 모델은 유연하여 스키마 변경이 용이하므로, 개발 비용이 절감되고 출시 기간이 단축된다.

근처 플레이어 지원

근처 플레이어와 함께 플레이 하는 등, 지리 정보에 기반한 게임이 증가하고 있다. 

→ MongoDB는 "Geo Location"을 기본적인 자료형으로 지원하여 GeoSearch, GeoNear와 같은 기존 지리 정보 API를 이용하는 데 최적화되어 있다. 

운영 데이터 분석

여러 사용자의 데이터를 통해서 고객 이탈 등의 사용자 패턴을 분석해야 한다.

→ 데이터 분석 시스템이 직접 MongoDB에 접속하여 Aggregation 기능을 활용하여 데이터를 분석할 수 있다.

Node js 지원

미니 게임은 게임 엔진을 이용하기보다는, Node.js로 간단하게 소규모로 개발되는 시나리오를 주로 따른다.

→ MongoDB는 Node.js를 지원한다.

2.2. NetErase

그 외에도 중국에서 2번째로 큰 NetEase는 5가지의 이유와, 그에 대응되는 5가지 MongoDB 장점으로 Benefit을 실현했다고 한다. Tencent의 시나리오와 유사하다.

2.3. Data Challenge 

전형적인 롤 플레잉 게임을 예시로 데이터 처리의 어려움을 파악해보자.

대부분의 롤플레잉 게임은 캐릭터 정보, 무기, 인벤토리, 위치 정보 등 다양한 종류의 데이터 모델을 필요로 한다.

위와 같은 데이터를 모델링하기 위해서는 RDBMS를 사용할 경우에는 30개 이상의 테이블이 필요하다.

데이터 모델의 복잡성으로 인해서 RDBMS를 사용할 경우에는 다음과 같은 문제가 발생한다.

  • 디자인 설계의 변형이 어렵다.(ex. 캐릭터 정보 또는 인벤토리의 신설)
  • 데이터가 여러 테이블에 산재하여 동기화 시 성능 문제가 발생한다.
  • 무중단 수평 확장에 한계가 있다.

또한, 게임 데이터는 빈번하게 업데이트되므로, DB에 모든 업데이트 내용을 반영할 경우 성능 저하가 우려될 수 있다.

이 문제에 대한 기존의 해결 방법은 Data Serialization이다. 

이는 실제 게임에서 변경되는 정보들을 메모리에 우선 바이너리 형식으로 메모리에 업데이트한 후, 특정 주기마다 DB로 동기화하는 형태를 말한다. 이 방식을 사용하면 빈번한 업데이트 내용 중에서 DB 갱신 시점의 업데이트 내용만 반영하면 되므로 읽기&쓰기의 성능이 효율적이다.

그러나, 위 방법을 통해서 저장된 바이트 스트림에 대해서

  • "모든 사용자의 특정 아이템의 성능 변경",
  • "모든 사용자의 인벤토리에서 가장 인기있는 항목 분석"

과 같은 작업을 수행하기 위해서는, 바이트 스트림을 다시 원래 데이터 형식으로 변환하는 레이어를 개발해야한다.

즉, 위 2가지 케이스와 같은 기능의 구현이 매우 어렵다.

MongoDB는 그러나, 데이터 모델을 캐릭터 별로 각각 1개의 Collection으로 둘 수 있어 복잡한 데이터 모델링에 용이하다.

(ex. 아이템을 바꿀 때 Collection에서 참조하는 ObjectId만 바꿔주면 된다.)

또한, 일괄적인 데이터에 대한 처리를 짧은 쿼리로도 실행할 수 있다. 

3. 게임 운영에 필요한 MongoDB

게임 운영에 있어서는 아래 4가지 조건이 필요하다.

  • Global deployment
  • HA Architecture
  • Security
  • User Behavior Analysis

각 조건에 대한 설명은 아래와 같다.

Global Deployment

미국, 일본, 한국 순으로 게임에 비용을 많이 지출하므로, 수익을 극대화 하기 위해서는 글로벌 시장에 진출해야 하며,

각국에 동시 진출하기 위해서는 글로벌 리전 구축이 가능해야 한다.

최근에는 글로벌 인프라는 대부분 메이저 CSP(AWS, Azure, GCP)를 통해서 구축되므로 CSP 리소스로 활용이 가능해야 하며,

MongoDB는 3사의 CSP에서 리소스로 활용 가능하여 이 조건을 만족한다.

HA Architecture

고가용성(HA, High Availability)을 보장하는 아키텍처를 구성할 수 있어야 한다. 

MongoDB는 최소 3개의 데이터 노드 이상으로 구성된 Replica Set을 통해서 고가용성을 보장한다.

Primary 데이터 노드에 장애가 발생하더라도, MongoDB Atlas는 Secondary 데이터 노드로 평균 3초 이내로 복구한다.

Security

각종 인증, 권한, 감사, 암호화 등을 지원한다.

User Behavior Analysis

게임 내 플레이어의 행동을 이해하고 분석하는 과정을 지원해야 한다.

(Ex. DLC Planning, 게임에서 흥미를 잃은 플레이어의 행동 패턴 분석)

  • DLC: DownLoad Content. Geo Data의 기반 Map 등 엄청나게 많은 플레이어가 동시에 접근할 가능성이 있는 컨텐츠를 말한다.
  • DLC Planning이란, 위와 같은 동시 접근으로 인한 부하를 분산시키기 위한 계획을 말한다. 
  • 어느 지역에 어느 시간에 배포를 해야할지에 대한 계획을 세우는 과정에서 데이터 수집 및 처리가 필요한데, MongoDB는 이러한 데이터의 수집 및 처리가 용이하다고 한다.