더북(TheBook)

4.6.1 안정성

안정성이란 “게임 서버가 얼마나 죽지 않는가”를 의미합니다. 게임 서버는 24시간 365일 항상 켜 있는 컴퓨터이기에 고장이 나면 안 됩니다. 하지만 게임 서버 프로그램의 버그 때문에 서버 프로세스가 중간에 비정상 종료되는 경우가 있을 수 있습니다. 혹은 게임 서버에 교착 상태나 어이없는 상황(예를 들어 대화상자를 띄워 놓거나 사용자의 키 입력을 대기하는 상태로 변하는)이 발생해서 프로세스가 일시 정지하는 경우도 있습니다. 심지어 청소하는 분이 실수로 서버의 네트워크 케이블을 빗자루로 쳐서 떨어뜨리는 경우도 있습니다. 모두 서버 안정성에 위협을 주는 상황입니다.

소프트웨어 측면에서 안정성에 악영향을 주는 주된 요인은 버그입니다. 구조적으로 설계가 잘못되었거나 사소한 코딩 실수가 서버의 안정성을 위협하고는 합니다. 예를 들어 다음과 같은 단순 버그 하나 때문에 서버가 다운되는 사태가 발생할 수도 있습니다.

Mob mobs[100];
Player_AttackMob(int mobIndex)
{
  // mobIndex가 범위를 벗어난다면?
  mobs[mobIndex].m_hp -= 10;
}

안정성에는 “게임 서버가 얼마나 오작동을 하지 않는가”도 포함됩니다. 게임 서버가 죽지는 않았지만, 가끔 연산 결과가 이상하게 나오는 것도 불안정한 서버로 치부됩니다. 간혹 이러한 것은 심각한 문제를 초래하기도 합니다. free-to-play 게임에서 현금으로 구매한 아이템이 갑자기 사라지거나 반대로 구매하지도 않은 아이템이 생긴다거나 하는 것이 그러한 예입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.