I'm FanJae.

Unity 게임 개발 캠프 개인 프로젝트 1일차. 서버 구조에 대한 고민 본문

Projects/MyToyMapleServer

Unity 게임 개발 캠프 개인 프로젝트 1일차. 서버 구조에 대한 고민

FanJae 2026. 9. 14. 23:28

1. 시작에 앞서

- 프로젝트의 범위를 어느 정도 정한 뒤 가장 먼저 고민했던 것은 서버를 어떤 구조로 구성할 것인가였다.

- 즉, 로그인 서버와 실제 게임 처리를 하는 서버를 처음부터 분리해야 하는가?에 대한 고민이었다.


2. 로그인 서버와 게임 서버에 대하여

- 온라인 게임의 서버 구조를 찾아보면, 로그인, 인증, 게임 세션을 각각 별도의 서버 또는 서비스로 분리해서 구성하는 경우가 많다.

- 따라서 이를 분리해서 생각하는 것이 필요하다고 생각했다.

- 다만, 실제 게임에서 사용한다는 이유만으로 서버를 나누기 보다 왜 서버를 나누는지 이해할 필요도 있었다.


3. 로그인 서버와 게임 서버의 역할

- 두 서버를 단순하게 나눠서 생각해보면, 다음과 같이 생각할 수 있다.

- 로그인 서버는 계정의 인증이나 로그인 상태의 확인, 캐릭터 목록을조회, 접속 가능한 게임 서버를 안내하는 과정이 필요하다.

- 반면 게임 서버는 플레이의 접속 관리, 캐릭터 상태 관리, 이동 및 전투, 몬스터 처리, 다른 플레이어와의 동기화, 실제 게임 로직 처리 등 서로의 역할이 다르다.

 


4. 이 둘을 나눠서 처리하는 이유(추측)

4-1. 역할과 처리 방식의 차이

- 작은 프로젝트라면 로그인 서버와 게임 서버를 반드시 나눠서 처리해야 할 이유는 크지 않다.

- 하지만 서버 규모가 커지면 인증과 게임 로직은 처리하는 작업의 성격이 많이 달라진다.

- 로그인은 특정 시점에 발생하는 요청에 가까운 반면, 게임 서버에서는 접속한 플레이어와 지속적으로 패킷을 주고받으며 게임 상태를 관리해야 한다.

- 따라서 서버를 역할에 따라 분리하면 인증과 실제 게임 로직의 책임을 명확하게 나눌 수 있다.

4-2. 보안 경계의 분리

- 보안적인 관점에서도 인증 과정과 실제 게임 서버의 접근을 분리해서 생각할 수 있다.

- 로그인 서버에서 먼저 사용자를 인증하고, 인증에 성공한 사용자에게 게임 서버 접속에 필요한 인증 정보를 발급할 수 있다.

- 이후 게임 서버에서는 해당 인증 정보를 검증한 뒤에만 정상적인 게임 세션을 생성하도록 구성할 수 있다.


- 다만, 로그인 서버와 게임 서버를 단순히 분리한다고 해결되는 문제가 아니라서 문제인데.. 이 부분에 대해서는 내일 이어서 고려를 해보려고 한다.

Comments