게임 서버 아키텍처의 분산화
기존 시스템은 단일 서버 구조로 개발 단계에서 단순성과 효율성을 제공했으나 다음과 같은 한계점 발생

- 수평적 확장 제한 : 단일 서버에 모든 기능이 집중되어 있어 트래픽 증가에 대응하기 힘듬
- 장애 시 서버 마비 : 서버 장애 발생 시 전체 서비스 중단
- 유지보수성 문제 : 서버의 역할과 기능이 복잡하게 얽혀있어 문제 진단 및 수정이 어려움
위와 같은 문제를 해결하고 안정성과 확장성을 확보하기 위하여 순차적으로 분산 서버 아키텍처 전환 진행
분산 서버 구조
새로운 아키텍처는 서버의 역할을 분리하여 기능별로 독립된 서버로 구성
각 서버는 다음과 같은 구조로 설계
.png)
- Nginx 서버 ( 리버스 프록시 )
- 역할 : 각 클라이언트의 요청을 각 서버로 라우팅, API를 통한 Stream 수정 및 리로드
- 목표 : 요청 분산과 각 서버 보호
- 인증 서버
- 역할 : 사용자 로그인, 회원가입 및 인증토큰 발급/검증
- 목표 : 인증 관련 작업을 별도로 처리하여 보안성 강화
- 로비 서버
- 역할 : 유저 상태 관리 및 게임 시작 전 설정 관리
- 목표 : 실시간 사용자 동기화와 효율적인 세션 관리 지원
- 매칭 서버
- 역할 : 레디스를 활용한 실시간 플레이어 매칭
- 목표 : 안정적인 매칭 시스템 구현
- 헬스체크 서버
- 역할 : 각 게임서버의 상태 모니터링 및 게임서버 등록시 자동 nginx 매핑요청
- 목표 ; 시스템 안정성을 보장하고, 자동화 장애 대응 목표(추후) / 봇 알림 서비스 (추후)
- 게임 서버
- 역할 : 실제 게임 로직 처리, 게임 상태 동기화, 사용자 입력 처리
- 목표 : 게임 로직에만 집중하여 성능 최적화 및 안정성 제공