Amazon Web Services 한국 블로그
대규모 다중 사용자 온라인 게임(MMOG) 및 멀티리전 게임 아키텍처 패턴 살펴보기
오늘은 비동기 웹기반 게임의 아키텍처 패턴 및 서버리스 세션 기반 게임 아키텍처 패턴에 이어 오늘은 렐름(REALM) 및 월드(WORLD)를 위한 대규모 다중 사용자 온라인 게임(Massive MultiPlayer Online Game, MMOG)와 멀티리전 게임 아키텍처 패턴에 대해서 알아보겠습니다.
렐름, 월드 기반 MMOG 서버 아키텍처
대규모 다중 사용자 온라인 게임(Massive Multiplayer Online Games, MMOG)들은 렐름 혹은 월드들을 기반으로 각 서버를 평행세계와 같이 구성하는 구조로 되어 있습니다. 위 아키텍처는 기존의 데이터센터에서 서비스하는 MMOG 게임을 AWS로 그대로 옮겼을 때의 구성입니다. 이와 같은 접근방식으로 기존 서비스 중인 MMOG를 AWS로 최소한의 코드 변경만으로 들어서 옮기는 (lift and shift) 방식으로 이전하는 것이 가능합니다.
MMOG의 경우, 웹 기반 게임과 세션 기반 게임과 달리, 게임 서버 및 클라이언트 사이의 영속적인 연결이 필요하고 플레이어가 로그아웃된 중에도 각 월드는 다른 플레이어들이 플레이하면서 최신의 상태를 유지하여야 하므로 Autoscaling의 적용이 어렵습니다.
하지만, MMOG의 경우에도 인스턴스 던전이나 전장과 같은 콘텐츠들은 세션 기반 게임의 아키텍처를 따를 수 있고, 월드 서버도 채널이나 존을 평행하게 나누어 구현하는 요즘의 트렌드에서는 각 채널 및 존을 Autoscaling할 수 있도록 구성하는 것을 검토해볼 수 있습니다.
Autoscaling을 구성할 때에는 AWS에서 지원하는 CloudWatch의 시스템 지표들을 기준으로 구성할 수도 있겠지만, 플레이 중인 인스턴스 던전 수라든지 존 별 플레이어 수 등의 게임 내 지표를 이용하여 CloudWatch에 맞춤형 지표를 게시하고 이를 기반으로 Autoscaling을 구성하는 게 더 적합합니다.
Amazon ElastiCache는 메모리 데이터베이스로 MMOG에서도 자주 사용되는 Redis 및 Memcached에 대한 완전 관리형 서비스를 제공하고, Amazon Aurora는 MySQL과 PostgreSQL과 완전호환되는 데이터베이스를 클라우드의 분산환경에 적합하도록 Cloud-Native한 방식으로 새롭게 구현하여 관리형 데이터베이스 서비스를 제공하므로 온 프레미스 데이터센터 환경과 비교하여 최소한의 코드변경으로 관리 부담을 줄이고 자동 복구 및 Multi-AZ 배포를 통하여 복원력 있는 게임 백엔드를 손쉽게 구축할 수 있습니다.
또한 Global Accelerator를 활용하면, 코드 변경 없이도 AWS의 엣지 로케이션을 활용하여 게임 클라이언트와 서버 간의 지연시간을 최소화하여 저지연 접속을 필요로 하는 MMOG의 네트워크 품질을 최적화하고 플레이어 경험을 향상시킬 수 있습니다.
멀티 리전 기반 게임 아키텍처 패턴
멀티 리전 게임 서버 아키텍처는 위에서 살펴본 MMOG가 지역별로 완전히 독립적으로 구성된 구조였던 것과는 달리, 글로벌 온라인 게임 서비스를 위한 아키텍처로, 하나의 중앙 서비스와 리전별로 전진 배치된 지역 서버들로 구성된 것이 특징입니다.
중앙 서비스는 계정, 인증, 상점 및 분석 등 공용 서비스들과 이를 처리하기 위한 데이터베이스 및 캐시 서비스들로 구성하고, 최적의 플레이어 경험을 위하여 리전별로 전진 배치된 지역 서버들과 VPC 피어링을 통하여 연결됩니다. 지역 서버들은 실제 게임 플레이를 담당하는 게임 서버, 던전 서버, NPC 서버 등의 실제 게임 서버들과 이를 처리하기 위한 데이터베이스 및 캐시 서비스들로 구성됩니다.
게임 클라이언트는 중앙 서비스들과 보통 HTTP(S) 기반의 RESTful API 로 통신하고 지역 게임 서버들에 TCP/UDP로 연결되는 것이 일반적입니다. 만약 각 리전별 데이터베이스의 동기화가 필요하다면 Amazon Aurora가 제공하는 Global Database나, DynamoDB가 제공하는 Global Table을 검토해볼 수 있습니다.
이 아키텍처에서는 게임 클라이언트와 서버 사이의 지연시간 최적화를 위하여 HTTP(S) RESTful API를 사용하는 중앙 서비스와의 통신은 엣지 로케이션을 통한 경로 최적화 효과를 볼 수 있는 CloudFront를 고려해볼 수 있고, TCP/UDP 통신을 사용하는 지역 게임 서버들과의 통신은 Global Accelerator를 고려해볼 수 있습니다.
마지막으로, VPC Peering은 AWS의 리전 간 백본으로 저지연의 private connection을 제공하지만, 전이성(transitive) 연결을 지원하지 않으므로 플레이어들의 증가 및 서비스 지역 확장에 따라 피어링된 리전이 많아질수록 VPC 피어링의 구성 및 유지보수 복잡도가 증가하는 경향이 있습니다. 이와 같은 경우, Transit Gateway를 활용하면 전체 네트워크 구성을 단순화하여 운영 부담을 줄일 수 있습니다.
마치며
이것으로 온라인 게임 중에서 대표적인 아키텍처 패턴들인 웹 기반 게임 아키텍처 패턴, 세션 기반 게임 아키텍처 패턴, MMOG 아키텍처 패턴들은 간략하게나마 살펴보았습니다. 같은 장르의 게임이라도 그 규모와 콘텐츠에 따라 세부 아키텍처들이 달라질 수 있고, 한 장르의 게임 내에서도 다른 장르의 게임들이 미니게임 요소로 추가되어 복합적인 아키텍처 패턴이 필요할 수 있는 등 실제 적용하게 되는 아키텍처는 더욱 복잡해질 수 있습니다만, 이 글이 게임별 아키텍처 패턴들에 대한 통찰을 드릴 수 있다면 기쁘겠습니다.
– 김병수, AWS 게임 솔루션즈 아키텍트
연재 목록