1 minute read

MMORPG 서버 구조 2/3

싱글 프로세스 구조와 멀티 프로세스 구조의 차이

싱글 프로세스

  • 게임서버가 하나다 라고 생각하면 됨
  • 와우 같은 게임에서 각 월드당 게임 서버가 하나씩 돌아간다면 싱글 프로세스 구조라고 볼 수 있음
  • Scale Up에 의존하는 방식이라고 보면됨. 게임 서버 성능을 올리기 위해서 더 강력한 머신으로 교체하는 방식.
    • 2GHz, 16기가, 4 core -> 3.5GHz, 32기가, 8 core 이런 식으로 머신의 성능을 올리는게 스케일업
    • 과거에 많이 사용하였음. 하지만 공짜 점심이 끝났다! 예전 같은 속도로 머신의 성능이 올라가지 않기 시작. 머신의 성능의 증가와 실제 프로세스의 성능이 크게 향상되지 않기 시작. 오히려 프로그램을 잘못 짜면 성능이 떨어지기도 한다.
    • 그래서 나온 것이 scale out 방식
      • 머신의 수를 늘려서 성능 향상을 키우는 방식. 프로세스가 늘어난다. 수십개, 수백개까지도

scale up과 scale out의 비용

  • 고성능 서버면 대당 1억이 넘는 것도.. 그래서 성능을 향상시키기 위해서는 비용이 한계체증하게 된다. 처음에는 scale up이 비용면에서 효율적일 수 있지만 성능이 올라갈 수록 한계비용이 비싸진다.

  • scale out 방식은 똑같은 머신을 하나씩 늘리는 방식이어서 비용이 선형적으로 일정하게 증가한다.

availability가용성

  • 만약에 싱글 프로세스 서버에서 서버가 죽어버리면 서비스가 종료되어 버린다. Single Point Of Failure
  • 멀티 프로세스 서버에서 하나의 서버가 죽어도 나머지 애들은 살아있기 때문에 서비스는 지속할 수는 있음. 일부 기능에서 문제가 생길지라도. 가령 경매장이 안되던가, 채팅이 갑자기 안되던가 이정도의 문제가 생기는 것
  • 따라서 멀티 프로세스가 가용성이 더 좋다고 한다.

그러면 싱글 프로세스는 무조건 안좋냐?

싱글 프로세스의 장점

  • 구조가 단순한다
  • 하나의 프로세스가 모든걸 처리하기 때문에 seamless하다. 싱글 프로세스에서는 월드를 옮겨다녀도 뭐 단절되는 것이 없다. 월드 이동에서 따로 처리해줄 것이 없다.

멀티 프로세스의 구성

  • 수평으로 나누는 방식   수직으로 나누는 방식
  • 월드가 있으면 지형지물로 나누는 방식 - 대륙이 두 개면 각 대륙을 각각 다른 머신이 담당한다.
    • 대륙을 넘어갈 때 사용자에게 어떻게 보여줄 것인가에 대한 처리가 필요.(그냥 걸어서 넘어가는 것은 더 복잡. 쉽게할 때는 보통 로딩하는 화면을 보여주는 편)
  • zone 방식, channel 방식
  • 나누는 것보다 중요한 것은 관리. 빌드, 모니터링, 롤오버 등

싱글 프로세스 + 멀티 스레드 vs 멀티 프로세스 + 싱글 스레드(?)

  • 어떤 것을 선택할 것인가?

출처