| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | ||
| 6 | 7 | 8 | 9 | 10 | 11 | 12 |
| 13 | 14 | 15 | 16 | 17 | 18 | 19 |
| 20 | 21 | 22 | 23 | 24 | 25 | 26 |
| 27 | 28 | 29 | 30 |
- multi-thread
- System Programming
- Data Structure
- c#
- Photon
- team project
- BOJ
- git
- Unity
- design pattern
- C++
- Toy Project
- Online Judge
- PS
- 독서
- Network Programming
- Today
- Total
I'm FanJae.
Unity 게임 개발 캠프 개인 프로젝트 1일차. 서버 구조에 대한 고민 본문
1. 시작에 앞서
- 프로젝트의 범위를 어느 정도 정한 뒤 가장 먼저 고민했던 것은 서버를 어떤 구조로 구성할 것인가였다.
- 즉, 로그인 서버와 실제 게임 처리를 하는 서버를 처음부터 분리해야 하는가?에 대한 고민이었다.
2. 로그인 서버와 게임 서버에 대하여
- 온라인 게임의 서버 구조를 찾아보면, 로그인, 인증, 게임 세션을 각각 별도의 서버 또는 서비스로 분리해서 구성하는 경우가 많다.
- 따라서 이를 분리해서 생각하는 것이 필요하다고 생각했다.
- 다만, 실제 게임에서 사용한다는 이유만으로 서버를 나누기 보다 왜 서버를 나누는지 이해할 필요도 있었다.

3. 로그인 서버와 게임 서버의 역할
- 두 서버를 단순하게 나눠서 생각해보면, 다음과 같이 생각할 수 있다.
- 로그인 서버는 계정의 인증이나 로그인 상태의 확인, 캐릭터 목록을조회, 접속 가능한 게임 서버를 안내하는 과정이 필요하다.
- 반면 게임 서버는 플레이의 접속 관리, 캐릭터 상태 관리, 이동 및 전투, 몬스터 처리, 다른 플레이어와의 동기화, 실제 게임 로직 처리 등 서로의 역할이 다르다.
4. 이 둘을 나눠서 처리하는 이유(추측)
4-1. 역할과 처리 방식의 차이
- 작은 프로젝트라면 로그인 서버와 게임 서버를 반드시 나눠서 처리해야 할 이유는 크지 않다.
- 하지만 서버 규모가 커지면 인증과 게임 로직은 처리하는 작업의 성격이 많이 달라진다.
- 로그인은 특정 시점에 발생하는 요청에 가까운 반면, 게임 서버에서는 접속한 플레이어와 지속적으로 패킷을 주고받으며 게임 상태를 관리해야 한다.
- 따라서 서버를 역할에 따라 분리하면 인증과 실제 게임 로직의 책임을 명확하게 나눌 수 있다.
4-2. 보안 경계의 분리
- 보안적인 관점에서도 인증 과정과 실제 게임 서버의 접근을 분리해서 생각할 수 있다.
- 로그인 서버에서 먼저 사용자를 인증하고, 인증에 성공한 사용자에게 게임 서버 접속에 필요한 인증 정보를 발급할 수 있다.
- 이후 게임 서버에서는 해당 인증 정보를 검증한 뒤에만 정상적인 게임 세션을 생성하도록 구성할 수 있다.
- 다만, 로그인 서버와 게임 서버를 단순히 분리한다고 해결되는 문제가 아니라서 문제인데.. 이 부분에 대해서는 내일 이어서 고려를 해보려고 한다.
'Projects > MyToyMapleServer' 카테고리의 다른 글
| Unity 게임 개발 캠프 개인 프로젝트 4일차. IOCP 기반 비동기 네트워크 처리 구조 구현 (0) | 2026.09.17 |
|---|---|
| Unity 게임 개발 캠프 개인 프로젝트 4일차. Blocking 서버의 한계 (개인 공부 내용) (0) | 2026.09.17 |
| Unity 게임 개발 캠프 개인 프로젝트 3일차. 동기와 비동기, Blocking과 Non-Blocking (개인 공부 내용) (0) | 2026.09.16 |
| Unity 게임 개발 캠프 개인 프로젝트 2일차. 인증 상태와 세션 전달 방식에 대한 고민 (0) | 2026.09.15 |
| Unity 게임 개발 캠프 개인 프로젝트 0일차. 기본 구상. (0) | 2026.09.13 |