패스잇
게임 · 심화

수만 명이 접속하는 온라인 게임에서 로그인·매치메이킹·세션 서버와 실제 플레이를 처리하는 게임 서버를 분리하는 이유는 무엇인가요? 게임 서버가 플레이 상태를 메모리에 들고 있는 구조에서 확장(스케일 아웃)과 장애 대응을 어떻게 설계하시겠어요?

힌트 · 상태를 들고 있는(stateful) 게임 서버와 상태가 적은(stateless) 앞단 서버의 역할 분리, 존 분할·인스턴스 단위 확장, 그리고 영속 데이터는 DB로 분리하는 관점으로 설명해 보세요.

스테이트풀/스테이트리스존 분할인스턴스 서버세션 서버스케일 아웃

모범답안

핵심은 상태를 들고 있는 부분과 그렇지 않은 부분을 분리해 확장 축을 다르게 가져가는 것입니다. 로그인·매치메이킹·세션 서버는 상태가 거의 없어 앞단에 서버를 추가하는 것만으로 수평 확장이 되지만, 게임 서버는 플레이어와 월드 상태를 메모리에 들고 실시간 틱을 돌리므로 존이나 인스턴스 단위로 쪼개서 확장해야 합니다. 그래서 필드는 존 단위로, 던전·전장은 인스턴스 단위로 나누고 세션 서버가 어느 서버에 붙을지 라우팅합니다. 영속 데이터는 게임 서버 메모리가 아니라 DB에 주기적으로 반영하고, 서버가 죽었을 때 마지막 저장 시점으로 복구하거나 다른 인스턴스로 재배치할 수 있게 설계하겠습니다.

읽었다면, 이제 직접 답해볼 차례예요

패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.

함께 보는 게임 개발 면접 질문

← 게임 개발 면접 질문 전체 보기