Search
Duplicate

[사례연구] 실시간 게임 KPI, 확장성문제를 SingleStore로 해결한 Gameloft

문서번호 : 71-400235
게임은 틈새시장에서 완전한 하나의 산업으로 변해가며 실시간 디지털 경험을 제공하는데 중점을 두고 있습니다. 게임로프트(Gameloft)는 많은 어워드를 수상한 모바일 및 콘솔 게임의 개발사이며 퍼블리셔 기업입니다. 이들은 100TB가 넘는 원시데이터로부터 실시간으로 이용할 수 있는 인사이트를 추출하기 위해 SingleStore DB를 사용하고 있습니다.
주니퍼 리서치에 따르면, 게임 산업은 2021년까지 총 매출이 $1,320억에 달할 것이며, 이는 할리우드의 매출을 훨씬 앞서는 것입니다. 모든 게임 개발자들은 차트 정상에 오르기 위해 치열한 경쟁을 하고 있습니다.
게임로프트는 프랑스에 기반을 둔 모바일 및 콘솔 게임의 주요 퍼블리셔이자 개발사로서, 전 세계에 열렬한 팬층을 확보하고 있습니다. 현재 이 기업은 모든 게임을 자체 개발하며, 업계 최고의 혁신 기업 중 하나로 부상했습니다.
자체 개발 제품으로는 "아스팔트 9", "드래곤 매니아 레전드", "아이스에이지", "토르:다크월드" 와 같은 성공적인 게임이 있습니다. Gameloft의 "미니언 러쉬", "아스팔트 8:에어본"은 앱 애니(App Annie)의 "세계 역대 다운로드 상위 10대 iOS 게임"에 포함되었고, "아스팔트 9: 레전드"는 애플과 웹비 어워드(Webby Awards)로부터 디자인 상을 받았습니다. 게임로프트는 세계 최고의 게임 회사 목록에서 쉽게 찾아 볼 수 있습니다.
"알파벳 9: 레전드" 수상 리스트
모바일 게임의 인기가 높아짐에 따라 게임로프트(Gameloft)는 게임 콘솔과 PC 뿐만 아니라 스마트폰, 휴대폰, 태블릿, 셋톱 박스 및 연결된 TV 등 모든 디지털 플랫폼에 제공하고 있습니다. 150개 이상의 국가에 걸친 글로벌 유통 네트워크와 전 세계 수백만 명의 일일 활성 사용자를 보유한 게임로프트는 매일 온라인 게임을 통해 가상 세계와 현실 세계를 결합하는 것을 기업의 목표로 하고 있습니다.
그러나 이러한 모든 성공과 함께 게임로프트는 실시간 게임 KPI를 제공하고 게임 내 거래를 포함하여 실시간으로 고객과 비즈니스를 수행하기 위해서는 인프라의 탁월한 성능이 절실했습니다. 이를 위해 그들은 현재와 미래의 게임 요구 사항을 완벽히 충족할 강력한 데이터 인프라 플랫폼에 투자를 계획했습니다. 그들의 많은 성공 사례와 선두 기업들과의 경쟁관계에서 볼수 있듯이 게임로프트는 심각하면서도 위험도가 높은 비즈니스를 운영하고 있다고 보면됩니다.
게임을 구동하기 위해 바로 사용할 수 있는 강력한 데이터 인프라가 없으면, 매력적인 게임을 만들기 위해 수행한 모든 노력이 순식간에 수포로 돌아 갈 수 있습니다. 게임로프트(Gameloft)는 다음과 같은 문제들을 경험했습니다.
증가하는 팬층 전반에 걸쳐 실시간 KPI(핵심 성과 지표) 대량 데이터의 유입 처리 문제
게임의 중요한 찰라의 순간을 효과적으로 활용하여 유저에게 적시에 적절한 사용자 경험을 제공하고 고객에게 적절한 제안을 하는 문제
게임로프트는 데이터 분석 파이프라인의 지연으로 인해 서비스가 원활하지 않았습니다.
실시간 분석을 통한 Game 속 event에 상응하는 마케팅 시행 요건 급격한 사용자 증가에 따른 인프라의 즉시 확장성 제공 100 TB 원시데이터에서 실시간 인사이트 얻기

실시간 인사이트 제공 불가

최근 거의 모든 산업들은 데이터 중심적이고 바로 활용 가능한 데이터를 필요로 하게 되었습니다. 게임로프트도 다르지 않았으며 실시간 데이터 통찰력이 없었다면 게임으로 수익을 창출하는 것을 완전히 최적화할 수 없었습니다.
게임로프트의 경우 기능 프로모션, 선택적 캠페인, 플레이어 유지 방법 등 여러 게임 내 전략을 추진하기 위해 실시간 인사이트가 필요했습니다. 분석이 지연된 상황에서 특정 시점에 게임이 얼마나 많은 수익을 내고 있는지, 어떻게 하면 계속해서 플레이어들이 게임을 더 즐길 수 있게 할 수 있는지 알 수 없었습니다. 이것이 없다면 적절한 아이템을 적시에 홍보하거나 플레이어의 인구 통계와 게임 내 행동에 기반한 프로모션을 거는 것과 같은 많은 중요한 요소들을 이용할 수 없습니다. 예를 들어, 플레이어가 더 많은 생명 아이템을 구매하고 게임을 계속할 수 있도록 적절한 순간에 무료 게임 코인을 제공할 필요가 있는데 이것이 불가능 할 수 있습니다.

확장성 문제

게임은 "hits" 비즈니스이며, 게임이 입소문을 타면 백엔드 인프라를 즉시 확장할 수 있는 것이 매우 중요합니다. 여러 게임로프(Gameloft) 게임에는 주요 엔터테인먼트 브랜드의 캐릭터가 포함되어 있습니다. 이 게임은 헐리우드의 히트 영화에서와 같은 정신(Spirit)과 분위기를 사용하여 설계되었습니다. 이러한 게임의 성장 잠재력은 무한합니다.
이러한 게임 중 하나를 확장해야 할 필요가 생기면 즉시 확장을 해야 합니다. 출시 처음 며칠 동안 성공을 거둔 일부 게임은 성능 및 가용성 문제로 인해 빠르게 추진력을 잃습니다. 신규 플레이어가 유입되면서 최고조에 달한 게임이 있었습니다. 그러나 응답성 문제가 발생하였고 며칠 후 시장에서 퇴출되었습니다.
게임로프트(Gameloft)는 이와 같은 운명을 맞이하고 싶지 않았지만, 기존 백엔드 MySQL DB는 수백만 명의 사용자와의 실시간 상호 작용에서 실시간으로 게임 내 KPI를 계산해야 하는 기대에 부응을 하지 못했습니다. 수백만 명의 동시 사용자를 라이브 계정 풀에 추가하면 MySQL 데이터베이스는 속도와 동시성 한계에 부딪혀 모든 사용자의 경험이 느려집니다.
게임로프트는 확장을 위해 MySQL 백엔드에서 작업 일부를 오프로드해야 했습니다. Singlestore(싱글스토어) DB의 탄력적이고 강력한 기술을 통해  원하는 결과를 얻어냈습니다. 어떻게 했는지 확인해 보시기 바랍니다.

MySQL기반 기존 아키텍처

SingleStore DB로 이전하기 전에 게임로프트(Gameloft)는 범용 하드웨어에서 실행되는 MySQL 클러스터에 KPI를 저장하는 것으로 시작했습니다. 이 시스템은 엄격한 SLA(예, 활성 사용자 수, 플레이어 유지 데이터, 사용자 상태)를 가진 중요 KPI와 완화된 SLA를 가진 중요 KPI 모두에 사용되었습니다. MySQL 클러스터는 16개의 서버로 구성되었으며 데이터는 여러 서버에 걸쳐 수동으로 분할되었습니다. 또한 애플리케이션 서버는 어떤 데이터가 어디에 있는지 알고 있어야 했습니다.
데이터가 MySQL 클러스터에 도달하기 전에 게임로프트는 MooseFS라는 오픈소스 기술을 사용하여, 들어오는 KPI 데이터를 서버에서 임시저장을 했습니다.(MooseFS : 내결함성, 고가용성, 수평 확장 분산 파일 시스템). 그런 다음 ETL 작업은 MooseFS에서 데이터를 처리하여 MySQL 클러스터에 저장하기 전에 데이터를 읽고 변환하여 분석에 사용할 수 있도록 했습니다.
데이터 크기 측면에서 MySQL 데이터베이스는 원시 데이터와 카운팅이 약 100TB의 용량으로 증가했으며 게임로프트(Gameloft)는 실시간으로 실행 가능한 인사이트를 추출할 수 없었습니다. 게임로프트는 게임 경험을 개선하는 데 필요한 인사이트를 생성하는데 거의 12시간이 걸리는 스토어드 프로시저(Stored Procedure)를 사용하고 있었습니다. 이 시점에서 인사이트의 가치는 감소했습니다. 왜냐하면 사용자의 게임 내 경험이 이미 더 진행 중이었고 오래된 인사이트 데이터로 게임에 영향을 미치는 것은 맥락에 맞지 않기 때문입니다. (자동차 운전 중에 이미 연료가 완전히 떨러졌는데 연료 부족 경고를 받는 것과 같은....)
Before 아키텍처(MySQL): 데이터 분산이 APP에서 수행(복잡성 증가), 이후 APP이 다시 데이터를 맵리듀스하고 집계
Architecture 전환 : MooseFS + Manual Partition + MySQL → Kafka + SingleStore

고속 분석 및 확장을 위한 재설계(SingleStore)

실시간 인사이트 문제에 대한 해결책으로 게임로프트(Gameloft)는 수집과 쿼리에 고성능을 제공하는 SingleStore DB, 그리고 쿼리 및 분석 애플리케이션에 널리 사용되는 SQL 인터페이스를 채택하기로 결정했습니다. 초기에 위험을 줄이기 위해, 빠른 KPI는 SingleStore DB를 사용하여 처리하고 덜 중요한 KPI는 MySQL을 사용하여 처리하는 람다(Lamda)와 유사한 아키텍처를 선택했습니다.
SingleStore DB는 SQL을 지원하는 무한 확장 가능한 RDBMS이지만, 일반 RDBMS에서 보기 드문 확장성을 제공할 수 있는 분산 방식의 데이터베이스 입니다. 표준 SQL 지원을 통해 SingleStore DB는 MySQL을 포함한 대부분의 기존 관계형 데이터베이스를 거의 드롭인(Drop-in) 방식으로 대체할 수 있습니다. SingleStore DB에 내장된 MySQL 와이어 프로토콜 지원은 애플리케이션 수정없이 바로 사용할 수 있음을 의미합니다. 이는 게임 산업에서 많이 사용되고 확장 가능하지만 SQL 지원이 부족한 NoSQL 데이터베이스와는 극명한 대조를 이룹니다.(아시겠지만, NoSQL 데이터베이스는 쿼리 작성이 어렵고 쿼리 응답 속도가 느립니다.)
게임로프트(Gameloft)의 많은 팀에서 SingleStore DB를 사용한 결과, 코드 변경이 없고 아키텍처와 애플리케이션 관점에서 엄청난 이점이 있었습니다. 그렇다면 SingleStore DB는 어떻게 게임로프트가 필요로 하는 엄청나게 빠른 KPI를 제공할 수 있었을까요? 그 답은 SingleStore DB가 인메모리 로우스토어와 디스크 기반 컬럼스토어 엔진을 제공하는 고유한(Unique) 기술을 갖고 있다는데 있습니다.
SingleStore DB는 게임로프트의 새로운 아키텍처의 핵심으로, 실시간으로 제공되는 대량 데이터 환경에서 고속으로 KPI를 계산합니다. KPI 데이터를 즉시 분석하는 것부터 실시간 인텔리전스를 사용하여 특정 게임 기능, 캠페인 및 시간 제한 이벤트를 활용하는 것까지 게임로프트는 게임 내 중요한 순간을 놓치지 않습니다. 게임로프트의 비즈니스 인텔리전스 매니저인 메리안 니콜레는 MySQL에서 SingleStore로 전환한 후 "이전에는 12시간이 걸리던 분석 작업이 15분 이내에 완료됩니다"라고 말합니다.
게임로프트의 경우, SingleStore DB는 MySQL과 함께 KPI 계산 속도를 높이는 특정 활용 사례에 사용되었습니다. SingleStore DB의 다른 데이터베이스들과 차별화된 포인트는 무엇보다 성능입니다. SingleStore에 1.5TB가 넘는 데이터가 저장되어 있는 게임로프트의 SingleStore 구축환경은 여전히 성장을 위한 충분한 여유 공간이 있습니다. 또한 게임로프트의 SingleStore는 온프래미스에 구축되었지만, 향후 SingleStore를 매니지드 서비스(Managed Service)형태로 클라우드(AWS, GCP, Azure)로 쉽게 마이그레이션하거나 하이브리드 솔루션을 사용하여 비용을 더욱 절감할 수 있습니다.
지금 무료로 SingleStore를 사용해 볼 수 있습니다.