서버 구조

모놀리식(Monolithic) 구조

Image

  • 서버의 모든 기능이 하나의 코드베이스와 배포 단위로 구성되는 방식

  • 간단한 구조로 초기 개발 및 설정이 쉬움

  • 확장성과 유지보수는 어렵다는 단점이 있음

데디케이트 구조

Image

  • 하나의 게임당 각 전용 서버를 이용해 게임 세션을 호스팅 하는 방법

  • 높은 대역폭과 최적화된 네트워크 환경을 제공해 지연 시간을 최소화 가능

분산 서버(MicroService) 구조

Image

  • 여러 서버가 협력하여 하나의 시스템을 구성하는 방식

  • 대규모 사용자 기반 처리 및 시스템의 가용성,확장성을 극대화 가능

Zenless Zone Zero

현재까지 공식적으로 공개된 “젠레스 존 제로(Zenless Zone Zero)”의 내부 서버 아키텍처 정보는 없으나,
일반적으로 호요버스(miHoYo) 계열의 온라인 액션 게임(예: 원신, 붕괴 시리즈 등)은 다음과 같은 아키텍처 특징을 가짐

Image

멀티 리전 / 글로벌 서버

  • 플레이어가 전 세계에 고루 분포하기에 지역별로 물리 서버 혹은 클라우드 인프라를 둬서 지연(Latency)을 최소화하고 안정성을 확보해야 함

클라이언트-서버 기반의 실시간 동기화

  • 액션 게임 특성상 캐릭터 이동, 전투 상황 등을 실시간으로 처리해야함

  • 이를 위해 TCP 또는 UDP(커스텀 프로토콜 기반 가능) 등을 활용해 끊김 없이 빠른 동기화를 구현함

마이크로서비스 또는 분산 아키텍처

  • 로그인, 매칭, 채팅/소셜, 결제, 이벤트 등 다양한 기능을 독립된 마이크로서비스로 분산시켜 운영

  • 로드밸런서(예: Nginx, HAProxy 등)와 API 게이트웨이를 통해 각각의 서비스로 트래픽을 효율적으로 라우팅하는 구조가 일반적임

데이터베이스 및 캐싱

  • 전투 로그, 플레이어 계정 정보, 아이템/재화 내역 등은 주로 RDBMS(MySQL, PostgreSQL) 또는 NoSQL(예: Redis, MongoDB)에 저장함

  • 실시간 단에서는 캐싱(예: Redis, Memcached)을 적극적으로 사용하여 빠르게 플레이어 정보를 조회해 클라이언트에 응답함

보안 및 안티 치트

  • 핵/치트 방지, 데이터 변조 방지 및 안전한 결제 처리를 위해 내부적으로 보안 모듈(안티 치트 시스템)과 암호화 통신 채널을 사용

서버 구조 설계

  • 실시간 대규모 멀티 서바이벌 장르를 생각하며 설계를 해보았다!

Image

Gate Way 개념 도입

  • 중요 DB에 접근하는 서버는 직접접근보다 Gate-Way를 통한 접근으로 보안성을 높임

  • 독립적으로 DataBase를 확장할 수 있음

Cache 사용

  • 실시간으로 접근이 필요한 경우 캐싱을 사용하여 지연시간을 최소화

  • 메모리를 기반으로 하여 빠른 응답 속도를 제공

  • 시스템의 수명 주기와 독립적으로 운영될 수 있어 분산 환경에서도 유용함

데디케이티드 서버

  • 대규모 멀티 서바이벌의 경우 지연율이나 서버 부하를 생각하여 게임당 하나의 서버를 유지하는 데디케이티드 구조를 사용했습니다!

  • 특정 게임을 전담하여 운영되는 서버로 대규모 온라인 게임에서 필수적인 역할을 수행