[게임 서버] 10.6 로그 및 통계 분석의 분산 처리

게시:     수정

카테고리:

태그:

이 글은 아래의 책을 자세히 정리한 후, 정리한 글을 GPT에게 요약을 요청하여 작성되었습니다.
게임 서버 프로그래밍 교과서, 배현직 저자

📦 10. 분산 서버 구조 사례

👉🏻 6. 로그 및 통계 분석의 분산 처리

📋 수집 로그 (FPS의 경우)

  • 더 나은 게임 서비스를 위해서는 로그 수집을 해야 한다.
  • 10초마다 모든 플레이어 위치
  • 가해자/피해자의 캐릭터 종류, 레벨
  • 게임 월드 위에 그려진 플레이어가 많이 죽는 지역 분포도
  • 플레이어 경험치 증가 곡선

📊 성능 요구 사항

  • 로그를 통계 분석(Data Warehousing: DW) 해서, 게임 제작자에게 제공해야 한다.
  • 효율적인 데이터 검색이 필요하다.
    • e.g. DB에서 원하는 로그 추출
    • DB에 접근하는 것은 오래 걸리므로 분산해야 한다.

🗄️ DB 분산

직접 접근 (분산 전)

---
config:
  look: handDrawn
  theme: dark
  layout: dagre
title: 분산 하기 전
---
sequenceDiagram
	participant G as 게임 서버
	participant DB as 데이터베이스

	G->>DB: 로그 레코드 삽입
	activate DB
	deactivate DB

	Note over G: ODBC나 ADD<br>연산 시간 소요
	Note over DB: 디스크 I/O 처리<br>시간 소요
  • ODBC/ADD: DB를 액세스하는 프로그램 모듈로, 연산량이 많다.
  • 전반적으로 오래 걸린다.

분산 후

---
config:
  look: handDrawn
  theme: dark
  layout: dagre
title: 분산 하기 전
---
sequenceDiagram
	participant G as 게임 서버
	participant L as 로그 서버
	participant DB as 로그 DB

	G->>L: ① 로그 기록
	activate L
	deactivate L

	Note over L: 로컬 파일에 저장

	L->>DB: ② 로그 레코드<br>삽입 질의
	activate DB
	deactivate DB

	DB-->>L: ③ 처리 성공 여부
	Note over L: 처리된 로그에 대한<br>로컬 파일 삭제
  • 로그는 신뢰성을 가져야 한다.
    • 로컬 파일에 저장해두었다가, 질의를 던지도록 한다.
    • 처리된 로컬 파일을 삭제한다.
    • 로그 서버/DB가 꺼졌다가 켜졌다면, 그 사이 로컬 파일에 쌓인 로그를 처리한다.

💡 추가 내용

  • 순위 서버, 채팅 서버, 마스터 서버(서버를 관리하는 서버)를 둘 수도 있다.

GameServer 카테고리 내 다른 글 보러가기

댓글남기기