이때 추가로 고려해야 할 것이 있습니다. 쌓는 로그가 플레이어의 부분 유료화 아이템을 구매하거나 인앱(in-app) 결제를 하는 경우, 이에 대한 기록은 신뢰성이 있어야 한다는 점입니다. 로그 서버가 어떠한 이유로 죽어서 미처 로그 DB에 기록하지 못했다면 곤란하겠지요. 로그 DB가 중간에 죽더라도 신뢰성을 가지게 하려면 어떻게 해야 할까요?
로그 서버는 게임 서버에서 ‘로그를 남겨라’는 지시를 받습니다. 로그 서버는 이 지시 내용을 로컬 파일에 일단 저장하고, 로그 DB에 질의를 던집니다. 질의 실행 후 로컬 파일에 있는 해당 내용을 삭제합니다. 그리고 로그 서버가 중간에 죽었다가 다시 켜졌을 때, 해당 로컬 파일에서 아직 기록하지 않은 로그를 로그 DB에 채워 넣으면 됩니다.
통계 분석 프로그램은 어떨까요? 통계 분석 프로그램은 자체로 별도의 프로그램입니다. 따라서 자연스럽게 통계 분석 프로그램은 분산 처리가 된 셈입니다.
Note 역할에 따른 다양한 종류의 서버
앞서 설명한 것 이외에도 여러 역할을 하는 서버가 있습니다.
• 순위 서버: 게임에는 대부분 순위 시스템이 있습니다. 학교에서 전국 석차를 내듯이 말입니다. 순위 연산은 많은 연산량을 차지하므로 순위만 담당하는 서버를 분리하는 것이 일반적입니다.
• 메신저, 채팅 서버: 채팅이나 메신저는 실시간 멀티플레이보다는 처리량이 적습니다. 하지만 게임 서비스가 불안정한 상황에서도 채팅이 잘 되게 만들고 싶을 때는 메신저와 채팅 서버를 별도로 분리하기도 합니다. 메신저는 다른 서버에 접속한 플레이어와 직접 대화하는 역할도 합니다.
• 서버들을 관리하는 서버(마스터 서버): 서버가 많을 때는 각 서버의 CPU나 램 사용량 등 건강 상태(health check)를 체크하여 과부하나 오작동을 감지해서 조치해야 합니다. 이처럼 서버들을 관리하는 서버를 마스터 서버라고 합니다.