로그인

회원가입 | ID/PW 찾기

취재

[NDC 16] 넥슨은 어떻게 그 많은 유저 게시글을 모니터링하고 있나?

김호연 개발자의 유저 동향 시스템 개발 노하우

송예원(꼼신) 2016-04-26 19:51:10

네오플 던파개발실을 거쳐 넥슨 인프라기술팀에서 일하는 김호연 개발자는 유저들의 이야기를 듣는 일을 맡아 왔다. '크롤러'로 인터넷에 흩어져있는 유저들의 글을 수집하고 이를 분석해 개발자들이 실시간으로 대응할 수 있도록 돕는 것이 그의 업무였다. 

 

그런 그에게 모바일게임 시대는 당혹스러웠다. 기존 분석 방식은 일단 게시글이 많아야 한다고 생각했다. 적은 모수는 의미가 없다고 판단했기 때문이다. 인터넷에서 모바일게임은 온라인게임과 비교해 많은 글이 올라오지 않을까 걱정했다. 

 

큰 착각이었다. 모수는 중요하지 않았다. 온라인게임 <피파온라인 3>에서 '핵'이라는 키워드가 체킹되는 시점이 유저 언급 수가 150회->1,000회로 급증했을 때라면, 모바일게임 <도미네이션즈>는 20회->150회 정도면 충분했다. 오히려 문제는 게임이 너무 많다는 것이었다. 넥슨에서만 한 달에 한번 꼴로 신작이 출시됐다. 모바일게임은 더욱 빠른 피드백을 요구했고, 그가 수집하고 정리해야 할 데이터가 많아졌다.

 

과연 넥슨은 그 많은 게임의 유저 게시글을 어떻게 수집하고 관리하고 있을까? 26일 NDC 16에서 김호연 개발자가 밝힌 유저 동향 분석 시스템 개발 노하우를 정리했다. /디스이즈게임 송예원 기자



넥슨 기술인프라팀 김호연

 

 

■ 데이터 수집하기: 크롤러 개발하기

 

수집 대상은 게시판 형태의 모든 게임 커뮤니티였다. 특정 게임의 게시판이 아니더라도 게임 이야기가 오가는 대형 커뮤니티라면 모두 대상이 됐다. 그 밖에도 페이스북 그룹, 페이지, 트위터, 심지어 애플 앱스토어와 구글 플레이스토어에 올라오는 리뷰도 수집했다. 

 

기본적으로 크롤러는 웹 요청을 하고 그 결과를 파싱해 원하는 공간에 저장하는 단계로 진행된다. 그의 작업은 크게 게시물 리스트 파싱과 게시물 수집 파싱 두 번의 과정이 필요했다. 

 

예를 들어 게시물 리스트에서는 제목, 게시위치, 게시물 번호 등의 정보를 불러온다. 1차적으로 게시물 번호와 제목을 불러오면 2차적으로 제목, 댓글수, 조회수 등이 변화했는지 다시 체크한다. 특히 댓글수나 조회수는 해당 게시물을 다시 체크를 해야 할지 말아야 할지 정하는 기준이 되는 정보다. 독립된 URL을 가지고 있는 개별 게시물은 보다 구체적인 내용, 댓글 등의 정보를 가지고 있다. 대부분 본문과 댓글이 한꺼번에 웹 요청을 할 수 있지만 게시판에 따라 댓글을 따로 요청하는 경우도 있다. 

 

다음은 해당 과정의 함수 값이다.

 






 

단일게임의 단일게시판을 모니터링하는 것과 달리 다수게임을 다수 게시판에서 모니터링할 때는 여러모로 어려움이 있다. 한 사이트에서도 다양한 게임의 이야기가 오가기 때문에 특정 게임의 키워드 실시간 수집이 쉽지 않다. 또한 해당 어려움이 있을 때 게시물 복구 스크립트를 작성하기 어렵다는 문제도 있다. 이는 대상 사이트가 늘어날 수록 더욱 심화되는 문제들이다. 

 

그는 이러한 문제를 파이썬 셀러리를 통해 해결했다. 한 작업 큐에 들어가는 작업의 단위는 게시물 리스트 수집 함수와 게시물 함수가 지속적으로 쌓이는 방식으로 사이트별 관리가 가능했다. 특히 할일 찾기 시스템을 활용해 다음 예정시간을 관리 할 수 있었다. 예를 들어 기본적으로 게시판 당 한 페이지만 수집한다고 가정했을 때, 새롭게 수집된 게시물 수가 70% 이상이면 1분에 한번씩, 50% 이상이면 4분에 한번씩 다음 작업이 진행된다. 

 


 


 

■ 데이터 저장하기

 

이렇게 수집된 정보는 Maria DB로 저장하고 있으며 Sphinx RT로 인덱싱을 진행한다. 인덱싱 항목은 게시글 ID, 게시판 ID, 게시물번호, 제목, 부가정보 및 댓글 등이다. 구글 플레이 스토어의 리뷰는 게시물 번호가 존재하지 않는다. 숫자가 아닌 유니트 스트링키를 가지고 있기 때문에 번호로 변환하는 작업이 필요하다. 이러한 과정을 거치면 각 게시판 별로 모양이 다른 정보들이 통일된 모양새로 정리된다. 

 




 

■ 데이터 활용하기

 

이렇게 모인 정보는 어떻게 활용될까? 인터페이스는 모든 개발자들에게 익숙한 아웃룩 구조를 띄고 있다. 좌측에 키워드를 볼 수 있고, 이를 클릭하면 키워드에 해당하는 게시물 리스트가, 리스트를 클릭하면 게시물이 보이는 구조다. 

 

모든 키워드는 넥슨에서 자체적으로 개발한 단어 사전에서 파생됐다. 가령 '렉', '핵', '버그'와 같이 위험하다고 판단되는 요소들도 포함돼 있다. '렉'이라는 키워드에는 '느려', '느림', '렉걸', '렉이'와 같은 단어들이 연관돼 있다. '버그'라는 키워드는 유저들이 이와 많이 쓰는 '나만그'(나만그래, 나만그러냐, 나만그러네), '나만안'(나만안되나, 나만 안뜨냐) 등의 단어로 묶여 검색할 수 있다. 

 


 


 


 

이슈 발생시 검색 외에도 게임 내 분위기를 볼 수 있는 리포트도 만들어진다. 주제별 키워드 카운트는 물론, 모든 커뮤니티를 통틀어 조회수가 제일 높은 게시글, 댓글수가 많은 글들이 매일 개발자들에게 리포팅된다. 이를 통해 넥슨의 모든 개발자들은 직접 커뮤니티를 방문하지 않고도 유저들의 동향을 살피게 된다.

 

김호연 개발자는 "우리가 만든 게임에 대해 우리는 생각보다 무지하다. 반면 유저는 생각보다 똑똑하다. 유저의 이야기에 늘 귀기울여야 하는 이유다"라고 말했다.