1. 기능/성능 문의

ProudNet 2는 ProudNet 1을 포함하고 있습니다. 여러분은 심지어 ProudNet 2를 가져와서 ProudNet 1 기능만 사용하시는 것도 가능합니다.

ProudNet 2에 내장된 ProudNet 1과 기존의 ProudNet 1은 동일한 버전입니다.

ProudNet 1은 P2P 네트워킹, 다양한 통신 방식(암호화, 스로틀링, Reliability, C/S & P2P, 압축), 멀티코어 서버 퍼포먼스 등을 제공하는데 초점이 맞추어져 있습니다. ProudNet 2는 이러한 ProudNet 1을 그대로 품으면서, 여러분의 DevOps를 극대화할 수 있는데 초점이 맞추어져 있습니다. ProudNet 2가 무점검 서버 패치 기능, 총체적 성능 분석 기능, 서버 메모리 뷰어 기능, 로그 추적 기능 등이 이를 위한 것들입니다.

로그인, 매치메이킹, 아이템 뽑기 등 실시간 멀티플레이가 필요없는 부분을 WAS와 메모리캐시(Redis 등)를 혼용하여 개발하면, 무료 WAS 미들웨어를 쓴다는 경제적인 이익도 있을 뿐만 아니라, 서비스 중인 서버에 대한 무점검 서버 패치가 가능하다는 장점도 있습니다. 또한 HTTP의 특성상 Wifi에서 셀룰러망으로 전환하는 상황에서도 내성을 가질 수 있다는 장점도 있습니다.

그러나 WAS와 메모리캐시 조합은 몇 가지 단점이 있습니다. 서버 유지비가 많이 든다는 단점은 둘째치고, 메모리캐시 데이터의 일관성(Atomicity and Consistency)을 위한 보호장치가 미흡하기 때문에 찾기 힘든 버그를 일으킬 수도 있습니다. WAS로 개발할 경우 실시간 멀티플레이나 매우 빠른 시간안에 처리해야 하는 로직을 바로 넣을 수 없기 때문에 게임 기획에서도 한계가 생길 수 있습니다.

ProudNet 2는 WAS처럼 핫리로드가 가능하면서도 망 전환 상황에서도 안전하게 작동합니다. 게다가 수평확장 상황에서도 메모리캐시가 가지고 있는 상기 문제가 없습니다. ProudNet 2는 매우 빠른 처리나 실시간 멀티플레이 로직을 바로 넣는 것도 가능합니다.

실시간 멀티플레이 게임 개발에 있어서, 데디서버와 일반적인 소켓 서버의 차이는 다음과 같습니다. (WAS는 거론하지 않겠습니다. WAS로는 성능이중요한 실시간 멀티플레이 게임 서버를 만들었을때 정상적인 작동을 기대하기 어렵습니다.

  • 유니티3D와 언리얼엔진의 데디서버
    → 1개의 게임 서버 프로세스는 1개의 게임방을 담당 / CPU, RAM 사용량 낭비가 매우 심함 / 패키지 게임 개발 및 리슨 서버에서 발전한 방식 / 개발 난이도 낮음.
  • 통상적인 소켓 서버
    → 1개의 게임 서버 프로세스는 다수의 게임방을 담당 / CPU, RAM 사용량 낭비가 없음 / MUD 등 온라인 게임 개발에서 발전한 방식 / 개발 난이도 높음.

서버 유지비용의 낭비를 감수하겠다면 데디서버로 개발을 해도 나쁘지는 않습니다만, 이 낭비 문제가 심각한 경우, 통상적인 소켓 서버 방식을 선택하셔야 할 것입니다. 그러나 상기 표에서처럼 개발 난이도 문제가 나오게 됩니다. 이에 대한 해결책은 아래와 같습니다.

  • 멀티스레드 프로그래밍
    → 서버 기기의 CPU 코어 갯수만큼 싱글스레드 서버 프로세스를 띄우고, 각 서버 프로세스는 다수의 게임방을 처리함으로 해결
  • 에러가 여러 게임방에 영향을 줌
    → ProudNet 2에서 제공하는 기능으로 완화

ProudNet 2는, 게임 개발자에 의해 발생하는 실수를 조기에 발견(서버메모리뷰어, 성능분석기능, 로그분석 기능)하고 고칠 수 있게 해주는 기능(무점검 서버 패치 기능) 뿐만 아니라 멀티플레이 동기화를 쉽게 개발할 수 있게 해주는 기능(Entity 복제 기능)도 제공됩니다.

ProudNet 2는 ProudNet 1을 내포하고 있습니다. 따라서 이에 대한 자세한 것은 [ProudNet 1 FAQ]를 살펴보시기 바랍니다.

2. 사용 문의

네. ProudNet 2는 WAS와의 상호작용을 할 수 있도록 REST API, Websocket API, Redis 기반 Presence Data를 제공하고 있습니다. 이를 이용해서, 여러분의 기존의 WAS를 혼용하시면 서 여러분의 실시간 멀티플레이 쪽에 ProudNet 2를 사용하실 수 있습니다.

네. 같은 DevOpsServer에 접속한 클라이언트끼리 P2P 네트워킹을 할 수 있습니다. 이를 통해 채팅이나 캐릭터 위치 동기화 등에 혼용하실 수 있습니다.

짧게 답변드리자면, DB Cache 사용은 더 이상 권장하지 않습니다. 대신 ProudNet 2의 Managed DB를 사용하시는 것을 권장합니다.

DB Cache는 DB 서버의 부하를 줄여준다는 장점이 있지만, DB 서버가 언젠가는 과부하에 걸린다는 것을 원천적으로 해결하지는 못합니다. 또한 DB Cache 서버가 중간에 죽어버리는 경우 플레이어 데이터가 과거 것으로 돌아가버리는 문제 즉 ‘백섭’ 문제가 발생하기도 합니다.

ProudNet 2의 Managed DB 기능은 DB Sharding이 고려되어 만들어져 있습니다. 따라서 DB 서버의 과부하 문제를 DB의 수평분산(scale out)으로 해결할 수 있게 해줍니다.

3. 라이선스/기술지원 문의

개발된 프로그램의 규모나 복잡도에 따라 달라지며, 개발 초기 단계일수록 교체에 소요되는 시간이 적어질 것입니다. 이미 오픈베타를 시작하신 경우에는 ProudNet 2로의 교체는 거의 새로 만드는 것에 준할 것입니다.

Scroll to Top