'Bluehole Studio'에 해당되는 글. 1건

  1. 2010/03/02 [Game] GameTech 2010 - TERA의 서버 구조 (1)

지난 주에 GameTech 2010에 다녀 왔습니다.
정말 오랜만에 세미나를 들으러 갔던 것 같습니다.

GameTech 2010 공식 홈페이지: http://gametech.gamespot.co.kr/

여러가지 세션을 들었지만 가장 인상 깊었던 블루홀 스튜디오의 세션에 대해서만 몇자 남깁니다.

일단 TERA의 서버 구조는 매우 간단합니다.
  • 한 Planet(Wow의 Relm)당 수용인원은 대략 5000명 정도 예상.
  • 한 Planet에는 하나의 Arbiter 서버를 Front-end로 둠.
  • 한 Arbiter 서버에는 여러개의 World서버를 Back-end로 둠.
    • TERA에서는 Planet간에도 유저가 만날 수 있는 통합전장이라는 시스템이 있으므로,
      특정 World서버에서는 여러개의 Arbiter 서버와 연결을 가질 수 있음.
이게 끝입니다.
(물론, 로그인과 같은 인증관련 부분은 생략 되었습니다. 한게임에서 처리하니 필요 없을 것 같기도 합니다.)

정말 간단합니다.
그렇기 때문에 역할 구분도 매우 명확합니다.

[Arbiter 서버]
  • 주로 I/O를 담당.
  • Network 통신에 해당하는 Non-Blocking I/O와 Database 작업에 해당하는 Blocking I/O를 담당.
    (내부적으로는 위의 두가지 방식의 Thread Pool을 분리 한다고 함.)
  • 채팅, 길드 등의 게임 로직을 담당

[World 서버]
  • 주로 (CPU작업이 많은) 게임로직을 담당.
  • Blocking I/O만을 처리하며 모든 Thread가 대등한 역할을 수행.
  • 대부분의 게임 로직을 처리하며, 통합 전장/Instance Dungeon 기능도 가짐.

----

여기까지는 발표 내용이고, 제 개인적인 생각을 몇 자 적어보자면...
발표 초반에 액션성을 강조한 게임이라고 TERA의 특징을 소개하였으나
설명을 들을 수록 액션성이 잘 표현되는 CPU와 I/O를 많이 쓰는 곳에 적합한 구조라는 생각은 안 들었습니다.

지금 구조에서는 Arbiter 서버 프로세스 하나에서 대부분의 I/O가 일어 나는데
I/O쪽 부하가 지나치게 집중 되도록 되어 있으며,
안정성 측면에서도 Arbiter 서버 이거 다운되면 어떻게 하나 걱정부터 많이 들었습니다.

물론, 서버 기능별로 채팅서버, 파티서버, 몬스터서버 이렇게 한 없이 분리하다보면
복잡도가 올라가서 결국 서버의 안정성이 떨어진다는 것을 부정하긴 힘들지만
아무리 그래도 프로세스 하나에서 Network I/O, 채팅/길드, DB 까지 다하는 것은 좀 지나치다는 생각이 듭니다. ( 물론, 블로홀 스튜디오에는 국내 최고 수준의 막강 QA 인력이 포진하고 있다고 합니다... )

뭐 이런 저런 우려와 걱정이 되긴 하였지만..
가슴 속에서는 'Arbiter 서버와 World 서버만 있다고? 이거 만들기 엄청 편하겠는데 +_+)/.... '


끝으로 강연자 분이 했던 말씀중에 인상 깊었던 말이 있었는데...
정확히 문구까지는 기억이 나지는 않지만 대략 아래와 같은 말이었습니다.

서버 구조는 해당 게임의 특징에 따라서 다르겠지만 그것과 더불어서 해당 게임을 만드는 팀에 따라서 달라져야 합니다. 지금 만들고 있는 서버 구조는 현재 팀의 구성에 따라서 정한 것입니다. 만약 현재 팀 구성이 아니었다면 다른 모델을 도전 해볼 수도 있었을 것 같습니다.




Posted by U_Seung