더북(TheBook)

이때 그림 10-15에서 왼쪽과 오른쪽의 끝도 서로 인접하고 있다 보아야 합니다. 즉, 샤드 1의 인접 샤드는 샤드 4뿐만 아니라 샤드 3도 해당합니다. 그림 10-15의 양쪽 끝을 당겨서 붙이면 그림 10-16과 같이 원형이 됩니다.

p416

▲ 그림 10-16 해시 테이블을 원형으로 표현한 모습

 

이렇게 함으로써 샤드 개수가 늘어나거나 줄어들 때, 서비스가 작동하지 못하는 시간을 대폭 줄일 수 있습니다. 그러나 샤드가 늘어나거나 줄어들 때, 한 플레이어 정보가 레코드 100개로 구성되어 있거나 레코드가 엄청나게 크면 어떻게 될까요? 이때는 일관된 해시 알고리즘을 썼다고 하더라도 샤드를 증가시키고자 레코드를 재배치하는 데 오랜 시간이 걸립니다.

실제로 게임 서비스를 하면 연휴 같은 특정 기간에 사용자 수가 급격히 늘어납니다. 그리고 그 기간이 끝나면 사용자 수는 급격히 떨어집니다. 이러한 상황에서는 필요한 서버 개수의 기복이 크기 마련입니다.

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