게임 · 심화
수만 명이 접속하는 온라인 게임에서 로그인·매치메이킹·세션 서버와 실제 플레이를 처리하는 게임 서버를 분리하는 이유는 무엇인가요? 게임 서버가 플레이 상태를 메모리에 들고 있는 구조에서 확장(스케일 아웃)과 장애 대응을 어떻게 설계하시겠어요?
힌트 · 상태를 들고 있는(stateful) 게임 서버와 상태가 적은(stateless) 앞단 서버의 역할 분리, 존 분할·인스턴스 단위 확장, 그리고 영속 데이터는 DB로 분리하는 관점으로 설명해 보세요.
스테이트풀/스테이트리스존 분할인스턴스 서버세션 서버스케일 아웃
모범답안
핵심은 상태를 들고 있는 부분과 그렇지 않은 부분을 분리해 확장 축을 다르게 가져가는 것입니다. 로그인·매치메이킹·세션 서버는 상태가 거의 없어 앞단에 서버를 추가하는 것만으로 수평 확장이 되지만, 게임 서버는 플레이어와 월드 상태를 메모리에 들고 실시간 틱을 돌리므로 존이나 인스턴스 단위로 쪼개서 확장해야 합니다. 그래서 필드는 존 단위로, 던전·전장은 인스턴스 단위로 나누고 세션 서버가 어느 서버에 붙을지 라우팅합니다. 영속 데이터는 게임 서버 메모리가 아니라 DB에 주기적으로 반영하고, 서버가 죽었을 때 마지막 저장 시점으로 복구하거나 다른 인스턴스로 재배치할 수 있게 설계하겠습니다.
읽었다면, 이제 직접 답해볼 차례예요
패스잇 앱에서 이 질문에 말로 답하면 AI가 꼬리질문까지 이어가며 1:1 코칭합니다.
함께 보는 게임 개발 면접 질문
- 실내 스테이지의 조명을 구성할 때 라이트맵을 구워 쓰는 방식과 실시간 조명을 쓰는 방식의 트레이드오프를 설명해 주세요. 동적으로 움직이는 캐릭터는 어떻게 처리하나요?
- 넓은 필드에 나무와 건물이 많은 맵에서 LOD를 적용한다면 어떤 기준으로 단계를 나누시겠어요? LOD가 줄여주는 비용과 부작용도 함께 설명해 주세요.
- 서버 권위 구조로 만든 대전 게임에서 '특정 유저가 비정상적으로 빠르게 이동한다'는 제보가 들어왔습니다. 스피드핵 여부를 어떤 순서로 검증하고, 서버에 어떤 방어를 넣으시겠어요? 검증에 드는 비용도 함께 고려해 말씀해 주세요.
- 입력 동기화(락스텝) 기반 게임에서 저장한 리플레이가 초반 구간은 정확히 재현되는데 몇 분 지나면 결과가 어긋납니다. 결정론이 깨지는 원인을 어떤 순서로 좁혀 나가시겠어요?
- 잡 시스템에 워커 스레드 수를 늘리고 작업을 병렬화했는데 프레임 시간이 거의 줄지 않았습니다. 어떤 원인들을 의심하고 어떤 지표로 확인하시겠어요?
- 라이브 서비스 중 핫픽스를 배포했는데 일부 유저에게서만 텍스처가 깨지거나 특정 콘텐츠 진입 시 크래시가 난다는 제보가 옵니다. 에셋 번들 버전 관리 관점에서 어떤 원인을 의심하고 어떤 순서로 대응하시겠어요?