9.2 서버 분산이 없다면?
분산 서버 설계를 바로 들어가기 전에, 가장 먼저 알아보아야 할 것은 서버에 분산 처리가 되지 않았을 때 어떤 일이 발생하는지 아는 것입니다. 이를 위해 간단한 예제로 분산 처리가 전혀 되지 않은 서버를 살펴봅시다.
▲ 그림 9-2 분산 처리를 하지 않는 서버
그림 9-2에서 모든 게임 서버 로직은 서버 프로세스 하나에서 수행합니다. 그리고 모든 플레이어 정보는 데이터베이스 하나에 저장합니다. 이제 이 게임 서버에 동시접속자가 증가하기 시작합니다. 결국 동시접속자 수가 무제한으로 증가했습니다. 어떤 현상이 발생할까요?
주로 발생하는 현상은 다음과 같습니다.
1. 서버로 보낸 메시지에 대한 처리 응답이 늦게 도착합니다.
2. 서버 접속 과정이 매우 오래 걸립니다.
3. 서버와 연결이 돌발 해제됩니다. 드물지만 TCP 재전송 타임아웃(retransmission timeout) 때문에 이러한 현상이 발생하기도 합니다.1 또는 사용자 정의 킵얼라이브(keep-alive) 메시징 타임아웃 때문에 발생하기도 합니다.
4. 서버 접속 자체가 실패하여 타임아웃 현상이 발생합니다.
1 클라우드 서버 측 가상 네트워크 기기나 해킹 방지 기기 때문에 발생합니다.