[TIL] 24.12.05 THU

GDORI·2024년 12월 5일
0

TIL

목록 보기
123/143
post-thumbnail

게임 서버 아키텍처의 분산화


기존 시스템은 단일 서버 구조로 개발 단계에서 단순성과 효율성을 제공했으나 다음과 같은 한계점 발생

  1. 수평적 확장 제한 : 단일 서버에 모든 기능이 집중되어 있어 트래픽 증가에 대응하기 힘듬
  2. 장애 시 서버 마비 : 서버 장애 발생 시 전체 서비스 중단
  3. 유지보수성 문제 : 서버의 역할과 기능이 복잡하게 얽혀있어 문제 진단 및 수정이 어려움

위와 같은 문제를 해결하고 안정성과 확장성을 확보하기 위하여 순차적으로 분산 서버 아키텍처 전환 진행


분산 서버 구조

새로운 아키텍처는 서버의 역할을 분리하여 기능별로 독립된 서버로 구성

각 서버는 다음과 같은 구조로 설계

  1. Nginx 서버 ( 리버스 프록시 )
    1. 역할 : 각 클라이언트의 요청을 각 서버로 라우팅, API를 통한 Stream 수정 및 리로드
    2. 목표 : 요청 분산과 각 서버 보호
  2. 인증 서버
    1. 역할 : 사용자 로그인, 회원가입 및 인증토큰 발급/검증
    2. 목표 : 인증 관련 작업을 별도로 처리하여 보안성 강화
  3. 로비 서버
    1. 역할 : 유저 상태 관리 및 게임 시작 전 설정 관리
    2. 목표 : 실시간 사용자 동기화와 효율적인 세션 관리 지원
  4. 매칭 서버
    1. 역할 : 레디스를 활용한 실시간 플레이어 매칭
    2. 목표 : 안정적인 매칭 시스템 구현
  5. 헬스체크 서버
    1. 역할 : 각 게임서버의 상태 모니터링 및 게임서버 등록시 자동 nginx 매핑요청
    2. 목표 ; 시스템 안정성을 보장하고, 자동화 장애 대응 목표(추후) / 봇 알림 서비스 (추후)
  6. 게임 서버
    1. 역할 : 실제 게임 로직 처리, 게임 상태 동기화, 사용자 입력 처리
    2. 목표 : 게임 로직에만 집중하여 성능 최적화 및 안정성 제공

분산 서버 장단점

장점

  • 트래픽 증가 시 특정 서버만 수평적 확장 가능
  • 필요한 부분만 자원 추가하여 효율적 운영 가능
  • 장애 발생 시 다른 서버에 영향을 최소화 하여 서비스 지속 가능
  • 기능별 서버 분리로 문제 발생 시 원인 파악 및 빠른 수정이 가능
  • 각 서버별로 특정 작업만 처리함으로 작업 효율 및 처리속도 증가

단점

  • 네트워크 구성 및 인스턴스 설계가 추가되어 구현과 유지가 더 어려워짐
  • 서버 간 통신이 원활해야 하며 단일서버에 비해 레이턴시 증가
  • 서버 운영 비용 증가 ( 실물 서버, 클라우드 서버 등 )
  • 분산 시스템 설계 및 구축에 시간과 자원 소요
  • 난이도 급증급증

결론

이전 단일 서버 구조는 단순성과 초기 개발의 빠른 진행이 가능했으나 앞으로 올 트래픽에 대한 대처가 부족하고 확장성과 안정성이 떨어지는 관계로 분산 서버 아키텍처 구성으로 전환을 통해 다음과 같은 결과를 추구합니다.

  • 대용량 트래픽 대비
  • 장애 발생 시 서비스 지속 가능성 확보
  • 각 서버 모니터링을 통한 유지보수성 증가
profile
하루 최소 1시간이라도 공부하자..

0개의 댓글