성능 분석 도구를 사용해서 어떤 함수가 가장 많은 처리량을 차지하는지 확인했다면, 일단 코드 최적화를 합시다. 가끔은 분산 처리를 하기 전 코드 최적화를 하면서 문제가 쉽게 해결되기도 합니다. 어느 정도 성능 최적화를 한 후에는 어떤 함수가 처리 시간을 많이 차지하는지 확인해 보세요.
Tip
성능 분석을 하는 방법도 저마다 다릅니다. 필자는 주로 성능 분석을 할 때, 각 함수들의 소요 시간(exclusive)뿐만 아니라 각 함수가 호출하는 하위 함수들의 소요 시간을 모두 합친 것(inclusive)을 봅니다.
예를 들어 MOBA(Multiplayer Online Battle Arena) 게임이라면 각 게임방의 배틀 플레이를 연산하는 함수가 가장 많은 처리량을 차지할 것입니다. 그다음 많이 차지하는 것은 매치메이킹이나 채팅입니다. 이 경우 분산 처리를 해야 하는 것은 각 게임방의 배틀 처리와 매치메이킹 처리입니다. 결국 앞서 살펴본 MOBA 게임에서 분산 처리를 하는 유형과 같습니다. 그런데 여러분의 MOBA 게임의 성능 분석 결과, 이와 다르게 나온다면 어떻게 될까요? 그러면 앞서 살펴본 분산 처리 유형을 사용하면 안 됩니다.
이렇게 해서 서버의 과부하 지점을 찾았으면 이제 어떻게 분산할지 알아볼 차례입니다. 분산 처리에는 크게 다음과 같은 분산 단위가 있습니다.
• 데이터 단위 분산
• 기능 단위 분산
그리고 게임 로직의 분산 처리 방식이 다음과 같이 나뉩니다.
• 동기 분산 처리
• 비동기 분산 처리
• 데이터 복제 및 로컬 처리
분산 처리 유형은 이들의 2×3 조합입니다. 이를 알아봅시다.