[reinvent 2024] 수천만 명의 플레이어를 대상으로 한 슈퍼셀의 최신 게임 출시 방법

Summary

AWS Graviton, Amazon Aurora I/O 최적화 스토리지, AWS Countdown, Amazon CloudFront와 같은 AWS 서비스를 사용하여 대규모 사용자 유입을 처리하는 동시에 전 세계 플레이어 경험을 원활하게 보장할 수 있는 서비스와 전략에 대해 자세히 알아보세요.


리인벤트 2024 테크 블로그의 더 많은 글이 보고 싶다면?

Tech Blog

AWS re:Invent 2024 Tech Blog written by MegazoneCloud

Overview

  • Title: How Supercell’s newest game launched with tens of millions of players
  • Date: 2024년 12월 2일(월)
  • Venue: MGM Grand | Level 3 | Chairmans 366
  • Speaker:
  • Toni Syvanen, Senior Cloud Governance Engineer, Supercell
  • Phil Ward, Technical Account Manager, Amazon
  • Tomi joki-Korpela, Senior Server Engineer, Supercell
  • Industry: Games

들어가며

SuperCell에서 출시한 Clash of Clans라는 게임을 재밌게 했던 기억이 있습니다. 이번에 스쿼드 버스터즈를 출시할 때도 다운로드를 해 플레이하였으며 굉장히 쾌적한 환경에서 게임을 한 기억이 있었습니다. AWS를 사용해 서비스를 제공하지 있는지 몰랐어서 이번 기회에 어떤 방식으로 성공적으로 게임을 런칭하였는지 배워보고 공유하고 싶어 이 세션을 신청하게 되었습니다.

Stateful을 선택한 이유

게임의 특성과 실시간 데이터 처리 요구사항에 가장 적합하였기 때문이며 주요 이유는 다음과 같습니다.

  1. 빠르고 신속한 반응성
    게임에서는 사용자의 액션에 빠르게 반응해야 하며 지연이 발생하면 사용자가 경험하는 지연이 크게 저하됩니다. 상태 기반 서버는 게임 상태를 서버의 메모리에 저장하기 때문에 외부 캐시나 데이터베이스에 매번 접근할 필요가 없어 빠른 반응이 가능합니다.

  2. 데이터 일관성과 무결성 보장
    게임 클라이언트를 신뢰할 수 없기 때문에 서버에서 최종적으로 모든 액션을 검증해야 합니다. 상태 기반 서버는 클라이언트와 서버가 동일한 게임 상태를 유지하며 서버가 클라이언트의 상태를 검증해 해킹 시도를 방지합니다.

  3. 데이터베이스 부하 감소
    상태 기반 서버는 모든 게임 상태를 실시간으로 데이터베이스에 저장하지 않고 필요한 시점에서만 저장하도록 설정할 수 있습니다. 이는 데이터베이스의 부하를 줄이고 읽기/쓰기 작업의 빈도를 효율적으로 조절하는 데 도움이 됩니다.

  4. 지연 시간(Latency) 최소화
    글로벌 플레이어를 대상으로 하여 게임 환경이 지연 시간에 민감하기 때문에, 각 리전에 배틀 서버를 배치해 사용자와 가까운 곳에서 데이터를 처리할 수 있도록 설계되었습니다.

  5. 복잡한 게임 메커니즘 지원
    Squad Busters는 실시간 멀티플레이어 게임으로 여러 플레이어의 액션이 동시에 반영되는 복잡한 시뮬레이션이 필요합니다. 상태 기반 서버는 게임 상태 데이터를 바로 서버에서 처리하므로 동기화 문제를 줄이고 게임의 복잡한 논리를 보다 효율적으로 처리할 수 있습니다.

왜 Aurora RDS인가?

기존에는 MySQL을 사용하던 Supercell이 Aurora Mysql RDS를 선택한 이유는 다음과 같습니다.

  1. 높은 성능과 안정성
    Aurora는 MySQL 호환 데이터베이스로 Supercell이 기존에 사용하던 MySQL을 확장성 있는 클라우드 서비스로 대체할 수 있었으며 Aurora의 I/O 최적화 기능과 Graviton 프로세서를 활용해 읽기/쓰기 성능이 개선되었으며  안정적인 데이터 처리가 가능했습니다.

  2. 유지보수 부담 감소
    Supercell의 초기 MySQL 환경은 샤딩을 통해 확장되었지만 샤딩 수가 증가함에 따라 유지보수가 어려워졌습니다. Aurora로 전환함으로써 샤딩과 복제 관리, 장애 복구 등의 작업 부담을 크게 줄일 수 있었습니다.

  3. 상태 기반 서버와의 효율적 연동
    상태 기반 아키텍처는 서버 메모리에 게임 상태를 저장하며 특정 시점에만 데이터베이스에 상태를 기록합니다.이 방식은 Aurora에 과도한 부하를 가하지 않고 필요할 때만 데이터를 읽고 쓰도록 해 데이터베이스 성능을 극대화합니다.

  4. 글로벌 데이터 분산
    Aurora 클러스터를 전 세계 여러 region에 분산 배치해 데이터베이스 핫스팟을 방지하고 부하를 고르게 분산시켰습니다. 이를 통해 글로벌 사용자들에게 안정적이고 일관된 성능을 제공할 수 있었습니다.

성능테스트와 AWS Countdown

Supercell은 Squad Busters의 성공적인 출시를 위해 성능 테스트와 AWS Countdown 프로그램을 적극 활용해 철저한 준비를 마쳤습니다. 두 가지 접근법은 서로 보완적 역할을 하며 게임의 안정성과 확장성을 보장했습니다.

성능 테스트 진행 방법 및 AWS Countdown 프로그램을 활용한 방안은 아래와 같았습니다.

  1. 성능테스트
    자체 제작 부하 테스트 클라이언트를 사용해 실제 플레이어와 동일한 프로토콜로 동시 사용자 환경을 시뮬레이션 프로덕션과 분리된 환경에서 최소 10만 동시 사용자부터 시작해 서버 한계점과 최적 상태를 평가하며 CPU 부하와 시뮬레이션 동기화 상태를 함께 모니터링하여 사용자 경험을 저하시키는 요소를 식별.

  2. AWS Countdown 프로그램
    AWS 전문가와 협력해 서버 용량 추정, 리전 선택, 문제 사전 식별 등을 통해 안정적 출시 지원 및  출시 당일 AWS 엔지니어가 실시간으로 서버 상태를 모니터링하고 예상되는 문제를 사전 경고.

결론

Supercell은 Squad Busters의 성공적인 출시를 통해 실시간 멀티플레이어 게임이 요구하는 높은 수준의 성능, 안정성, 그리고 확장성을 효과적으로 달성했습니다. 이를 가능하게 한 주요 요인은 AWS의 서비스를 적절히 활용한 점과 다방면으로의 준비 과정에 있습니다.
Supercell은 Stateful 아키텍처를 통해 실시간 데이터 처리와 게임 내 복잡한 메커니즘을 효율적으로 지원했습니다. 이로 인해 전 세계적으로 낮은 지연 시간과 안정적인 사용자 경험을 제공할 수 있었으며, 글로벌 사용자들을 대상으로도 품질을 유지할 수 있었습니다. 특히, 각 리전에 배틀 서버를 배치해 사용자가 게임 플레이 중 물리적 거리로 인해 발생할 수 있는 지연 시간을 최소화한 점은 매우 인상적이였습으며 글로벌 서비스를 운영할 때 참고할 수 있는 내용을 많이 배울 수 있었던 시간이였던 것 같습니다.

글 │메가존클라우드, Enterprise Managed Service Center (EMS), Kubernetes Engineering Team, 유태균, 매니저
게시물 주소가 복사되었습니다.