넷텐션 배현직 대표 “서버 문제 줄이려면 구조를 단순하고 쉽게”
지스타2021에서 진행된 컨퍼런스에 참여한 넷텐션 배현직 대표가 ‘더 안정적이고 빠른 게임서버 개발 방법’에 대해 강연을 진행해 자신의 노하우를 공유했다.
배현직 대표의 설명에 따르면 게임 서버는 ‘어떤 게임을 만드느냐’와 ‘어떤 콘텐츠를 구현하는가’에 따라 형태가 많이 달라지게 된다.
예를 들어 혼자서 콘텐츠를 즐기는 모바일RPG(역할 수행 게임)의 경우 빠른 반응 속도가 중요하지 않지만, 실시간 전투가 중요시 여겨지는 MORPG(다중 접속 역할 수행 게임)나 MMORPG(대규모 다중 접속 역할 수행 게임)의 경우 실시간 전투 데이터를 처리해주는 별도의 서버를 구축해야만 이용자들의 많은 불편을 느끼는 데이터 지연 현상을 최소화할 수 있다.
콘텐츠에 맞게 효율적인 서버 구축을 하지 못할 경우 순간적으로 프로그램이 강제로 종료되는 서버 크래시나, 서버의 작업 처리 속도보다 클라이언트의 요청이 더 많아져서 발생하는 타임아웃, 서버 랙 현상, 아이템 복사 같은 서버 오작동 등의 현상이 발생하게 된다.
이 같은 서버 문제를 해결하기 위해서는 서버를 중단시키고 수정 작업을 해야 하기 때문에 문제 해결이 쉽지 않다. 클라이언트 버그의 경우에는 해당 이용자에게만 문제가 발생하기 때문에 문제 추적이 쉽지만, 서버 문제의 경우 다수의 이용자들에게 영향을 주기 때문이다.
단순한 기능 테스트는 봇으로 진행해도 충분하나, 복합적인 기능을 테스트할 때는 다수의 인력이 투입되는 사내 테스트나 소프트런칭이 필요하기 때문에 어디서 문제가 발생하는지 찾아내는 것도 쉽지 않다.
배대표는 이 같은 문제를 해결하기 위해서는 서버 구조를 최대한 단순하고, 쉽게 만드는 것이 중요하다고 강조했다.
특히 서버를 구축할 때 구조를 최대한 단순하게 구현할 수 있도록, 서버 개발자에게 필요한 기능과 규모에 대한 상세한 정보 전달이 필요하다고 덧붙였다.
서버 문제가 발생했을 경우에는 서버가 어떤 동작을 하다 문제가 생겼는지를 파악하기 위해 로그 기능을 활용하게 된다. 클라이언트의 경우 문제를 추적해주는 ‘디버거’ 프로그램을 활용하면 되지만, ‘디버거’는 프로그램 동작을 멈춘 상태에서만 사용할 수 있어, 계속 동작하고 있어야 하는 서버에는 활용하기 어렵기 때문이다.
다만 모든 서버 활동을 실시간으로 기록하는 로그 기능도 서버에 부하를 줄 수 있으며, 엄청나게 쌓이는 로그에서 문제되는 부분을 찾아내는 것도 쉬운 일이 아니다.
배대표는 이 같은 문제들을 넷텐센에서 새롭게 개발한 프라우드넷2로 해결할 수 있다고 설명했다. 프라우드넷2는 디버그 트레이스 기능을 제공해서, ‘디버거’ 만큼은 아니더라도 서버를 중지시키지 않은 상태에서도 어느 정도 ‘디버그’ 추적을 할 수 있으며, 서버 내 어느 지점에서 처리 성능을 많이 차지하고 있는지, 서버 크래시 현상이 발생했을 때 서버를 자동 재시작하고, 어느 지점에서 크래시가 발생했는지에 대한 정보를 확인할 수 있다.
또한 이용자들의 접속이 유지되고 있는 상태에서도 패치를 진행할 수 있어, 개발자들의 실수를 줄여준다.
프라우드넷2는 현재 홈페이지에서 베타 버전을 신청할 수 있으며, 내년 정식 출시때까지 무료로 이용할 수 있다.