단순히 운영툴이라고 하면 게이머에게 있어선 생소한 단어다. 하지만 알고 보면 그리 생소할 것도 없다. 운영자들이 게임을 서비스하면서 각종 데이터를 살펴보고, 수정할 수 있도록 DB(Data Base)를 건드리기 쉽게 만든 툴이 바로 운영툴이다.

서버를 이용하는 게임이라면 이런 운영툴의 사용은 필수로 넥슨 역시 자사가 개발, 서비스하는 게임들을 운영툴을 사용해 관리하고 있다.

이렇듯 많은 운영툴을 구축한 넥슨이지만, 그런 넥슨에게도 난관은 있었다. 중국의 '탑 오브 탱커' 운영툴 연동이라는 난관이었다. 넥슨의 중국 게임 운영툴 연동기. 앞으로 중국 게임을 퍼블리싱할 개발사를 위한 그들의 경험담을 소개한다.



■ 운영툴, 왜 필요할까?


▲ 넥슨모바일퍼블리싱 개발팀 송화영, 문소은(좌측부터)

게임을 서비스하면서 운영툴은 왜 필요한 걸까. 넥슨의 송화영 개발자는 게임을 서비스하면서 으레 있는 운영 이슈의 사례를 들며 그 필요성을 강조했다.

“예를 들어 보겠습니다. 한 유저가 게임을 즐기다가 캐시 아이템을 구입했는데 그 순간 전화가 와서 제대로 확인을 못 했습니다. 그런데 나중에 보니 아이템이 안 들어온 거죠. 그러면 해당 유저는 1:1 문의를 통해 CS를 접수할 겁니다.

운영자는 그럼 운영툴에 접속해서 해당 유저의 여러 데이터를 조회합니다. 인벤토리에 아이템은 있는지, 구매 이력은 어떤지, 혹은 아이템 사용 내력도 말이죠. 이렇게 해서 나온 결과로 아이템을 지급해주던가 할 수 있습니다.”


▲ 운영툴을 통해 유저 문의의 진위를 파악, 대처할 수 있다

그러면서 그는 운영 CS에는 현황 조회, 로그 조회, 데이터 수정 같은 3개의 필수 요소 외에도 이벤트나 프로모션을 통한 아이템, 골드 드랍률 변경 등의 다양한 기능도 있으면 좋다고 했다. 이런 운영툴은 그럼 왜 필요한 걸까. 그 이유는 간단하다. 운영툴이 없다면 DB담당자가 매번 입력을 수정해야 한다. 당연히 그에 따른 인력낭비는 물론 변경 시에 이슈가 발생할 수도 있다.

그런 만큼 운영툴을 만드는 건 귀찮지만 서도 게임을 서비스함에 있어서 필수적이라고 송화영 개발자는 말했다.



■ 넥슨이 사용하는 모바일 게임 운영툴은?


보통 온라인 게임의 경우 게임별로 각각의 운영툴을 갖고 있다. 긴 개발 기간을 갖고 있고 대규모 개발 인원이 투입되며 오랫동안 서비스를 하는 만큼, 자신의 게임에 맞는 운영툴은 필수적이다.

그렇다면 모바일 게임은 어떨까. 모바일 게임은 정반대다. 온라인 게임에 비해 개발기간이 상대적으로 짧고 소규모에다가 서비스 기간 역시 천차만별이다. 이런 상황에서 개발자는 딜레마에 빠진다. 게임에 전력을 쏟아서 퀄리티를 향상시키기도 어려운데 거기에다가 운영툴까지 만드는 건 큰 부담으로 다가오는 것이다. 넥슨은 이런 개발자의 부담을 덜어주기 위해 개발사가 로그 등을 조회할 수 있도록 API만 제공해주면 자체적으로 운영툴을 만들어서 제공해줬다.


▲ 개발사가 운영툴까지 담당하면 버겁다. 그래서 넥슨은 자신들이 직접 운영툴을 구축했다.

“우리는 많은 개발사의 게임을 퍼블리싱하고 있습니다. 일일이 만든다면 너무 많죠. 그래서 여러 게임에 대응되는 운영툴을 만들었습니다. 거기에 더해 게임 서버와 운영툴을 직접 연결하지 않고 게이트웨이 서버를 둬서 게임과 운영툴간의 느슨하게 결합할 수 있도록 했습니다. 이렇게 하니 운영툴과 게임간의 영향을 미치는 요건들이 감소했습니다.”



■ 좌충우돌 '탑 오브 탱커' 운영툴 구축기



‘탑 오브 탱커(탑탱)’의 서비스를 결정했을 때만 해도 넥슨에서는 지금까지 하던 것과 비슷하게 생각했다고 한다. 중국 내 탑탱에서 사용하는 운영툴이 있었지만, 마찬가지로 API만 제공해주면 넥슨에서 알맞은 운영툴을 만들겠다고 생각한 것이다. 하지만 생각처럼 되지는 않았다.

“당시 중국의 ‘탑탱’ 운영툴은 우리 생각과는 달랐습니다. API는 제공해줬지만, 문제는 로그 파일의 경우 별도로 관리하고 있었습니다. 그리고 여건상 로그 파일은 API를 통해서 제공하기가 어렵다는 거였습니다. 그래서 별도의 미들웨어 서버를 두자고 결정했습니다. 우선 미들웨어를 통해 API를 받고 게이트웨이와 통신하도록 했습니다. 근데 문제는 이렇게 하니 성능 이슈가 발생하는 거였습니다.”

▲ 생각과는 다른 중국 운영툴에 미들웨어 서버를 따로 두기도 했지만 문제는 해결되지 않았다

유저가 많아지고 활발히 활동하는 만큼 로그는 쌓이고 그게 결국 미들웨어와 통신하는데 부하가 생겼다. 고민 끝에 넥슨은 새로운 방법을 구상했다. 요점은 로그 파일을 바로 미들웨어가 읽지 않고 로그 파일 서버를 따로 둬서 이 서버를 통해 로그를 관리하게 했다. 그리고 미들웨어는 로그 파일 서버를 통해서만 로그를 주고받도록 한 것이다. 이렇게 하니 대량의 로그 파일에 접속해도 미들웨어에는 큰 부담이 없었다. 모든 문제가 해결 된 걸까? 답은 아니었다.

“이렇게 하니 스토리지 용량과 안정성 문제가 불거졌습니다. 로그 파일 서버에 로그가 쌓여서 용량이 부족해지면 용량을 늘려야 했습니다. 물론 용량은 부족할 때마다 늘리면 됐지만 계속 늘릴 수도 없었고, 안정성에 대한 문제도 있었습니다.”

결국 또 다른 프로세서를 구축할 수밖에 없었다. 게임 서버에 저장되는 로그를 로그 파일 서버가 배치 잡(Batch Job)으로 다운받은 후에 AWS S3에 로그 파일을 적재하고 요청이 오는 로그에 대해서만 로그 데이터를 제공해 주도록 한거다. 그러면 미들웨어는 로그 데이터를 넥슨의 운영툴에서 사용하는 Json으로 파싱 후 운영툴에 전달하면 된다.

▲ 좀 더 효율적이고 효과적인 로그 처리 방법이 필요했다

자, 로그 조회에 대한 문제는 이렇게 해결했다. 이제는 더 이상 고민할 필요가 없어 보였다. 하지만, 여전히 문제는 발생했다. 이런 과정을 통해 중국에서 제공해주는 API와 넥슨이 원하는 API는 다르단 게 문제였다.

“페이징(Paging)의 경우를 예로 들겠습니다. 중국에서 받은 API는 아이템 조회 정보를 아이템 코드로만 제공해줬습니다. 운영자가 살펴보기 위해선 코드가 아닌 아이템명이 적힌 테이블이 필요했는데 말이죠. 그리고 전체 테이블을 주는 것도 아닌, 일부분만 제공받을 수 있었습니다. 결과적으로 다시 운영툴을 고쳐야 했습니다.”

우선은 ‘탑탱’의 Restful Json 형식을 넥슨에 맞게 수정하고 페이지 처리에 맞게 데이터 역시 수정했다. 그리고 아이템 목록 등의 메타 테이터는 파일 형태로 해서 아이템 정보가 올 때마다 파싱 후 데이터를 매핑하여 운영툴로 전달할 수 있도록 수정했다.

▲ 언제나 그래 왔듯이 넥슨은 답을 찾아냈다

이렇게 긴긴 수정 끝에 ‘탑탱’ 중국 운영툴과 넥슨의 운영툴을 완벽하게 연동할 수 있었다. 끝으로 문소은 개발자는 다음과 같이 말했다.

“끝으로 중국 게임의 운영툴을 연동하면서 얻은 팁 2개에 대해서 말하겠습니다. 첫 번째는 중국의 경우 운영툴 담당자가 세분화되어 있고 많습니다. 하지만 총괄하는 사람이 없는 경우도 많아서 시스템 전체를 파악하는데 오랜 시간이 듭니다. 그리고 담당자 교체 역시 빈번한 만큼, 운영툴에 대한 구조를 문서화해서 남겨두길 권합니다.

그리고 아이템 현황 조회나 데이터 수정에 대한 필요성은 중국이나 우리나라나 마찬가지였지만 로그 조회에 대해서는 큰 필요성을 느끼지 못했습니다. 왜냐하면 중국의 경우 아이템 환불을 원하는 유저도 적고 개발사가 해주는 경우도 거의 없습니다. 떠나는 유저를 잡기 보다는 신규 유저 유치를 더 중요하게 여기기 때문입니다. 그런 만큼 이후에 중국 개발사와 협업을 할 경우 이런 로그 조회 기능이 운영툴에 포함됐는지 꼭 확인 바랍니다”