<월드 오브 워크래프트>(이하 WOW)를 해 본 사람들이라면 한번 쯤 들어는 봤을 경매장 검색 사이트, ‘wowz.kr’은 어떤 발상에서 나왔으며, 어떻게 만들었을까? 심지어 개인의 영역에서 말이다. 19일, NDC 15에서 ‘wowz.kr’을 만든 모빌팩토리의 윤석주 개발자가 직접 강연을 통해 ‘wow.kr’을 만든 이유와 활용한 핵심 API, 서버 개발 방법 및 솔루션을 소개했다.
윤석주 개발자가 ‘wowz.kr’을 만든 이유는 간단하다. <WOW> 유저인 그는 경매장을 이용하면서 현재 매물 외의 정보가 부족하다는 점에 불만을 느끼고 직접 개발한 것.
그가 생각한 <WOW> 경매장의 문제점은 ‘정보의 부족’이었다. 각 아이템 가격의 흐름을 알 수 없고, 현재 올라온 물품이 얼마나 되는지 파악하기 쉽지 않았다. 더불어 개인적인 궁금증인 ‘경매장 큰손’의 존재도 확인하고 싶었다.
그래서 그는 <WOW> 경매장 시세를 알 수 있는 서비스를 만들기로 결심했고, 아이템 검색 및 각 아이템 별 가격 등의 정보와 히스토리, 보기 쉬운 그래프를 목표로 ‘wowz.kr’을 개발했다.
윤석주 개발자가 ‘wowz.kr’을 개발하며 사용한 것은 <WOW>가 제공하는 경매장 API다. 해당 API는 15분 마다 경매장의 스냅샷을 제공하는 API였다. 파일 포맷은 JSON, 물품 1개당 테이블의 한 줄을 차지하는 형식이다.
그는 먼저 받아온 데이터를 토대로 아이템 ID별로 데이터를 정리하는 작업을 하도록 만들었다. 그가 원한 정보는 해당 아이템의 최소 가격, 평균 가격, 중간 가격, 물품 개수였다. 그는 데이터를 DB로 정리해 아이템을 검색하면 자동으로 가격 변동을 그래프를 뽑아주는 시스템 개발에 착수했다.
‘wowz.kr’ 개발이 처음부터 수월했던 것은 아니다. 시행착오도 있었다. 그는 처음 서비스를 개발할 때 mongodb에 데이터를 저장하도록 했다. 이유는 JSON 포맷을 그대로 저장할 수 있었고, 개발 도중 스키마를 변경하기 간편했기 때문이다.
하지만 생각하지 못했던 문제가 발목을 잡았다. 바로 ‘많은 데이터’였다. 처음 서비스를 시작할 때 3개월간 데이터를 누적한 뒤 시작했는데, 15분 마다 경매장의 새 데이터를 받아왔고, 매 15분마다 새로운 데이터가 80MB씩 추가됐다. 계산해보니 3개월이면 691GB의 데이터를 새로 쌓는, 실로 어마어마한 양이었다.
데이터가 계속 늘어나는 구조인 만큼, 늘어나는 데이터에 맞춰 관리 및 유지비용이 증가한다는 점도 문제였다. 개인이 운영하는 서비스인 만큼, 이런 비용 문제는 그냥 넘어갈 수 없었다.
문제점을 인지한 윤석주 개발자는 분산 DB를 이용하기로 결정했다. 노드를 분산해 검색 속도를 늘리고, 앞으로 늘어날 데이터의 양까지 고려하기 위함이었다.
결국 그가 택한 방식은 키-밸류 스토어(Key-Value Store)였다. 키-밸류 스토어는 수평확장도 편리하고, 키에 세로열을 늘릴 수 있었다. 일관성을 보장하지 않는다는 단점이 있지만, 개인 영역의 서비스라 큰 문제가 아니라 넘어갔다.
그는 이용할 수 있는 여러 솔루션을 고민한 결과, 속도는 조금 느리지만 사용한 만큼 비용을 지불할 수 있는 Azure Table Storage를 선택했다. 다른 솔루션들은 속도는 빨랐지만, 비용문제가 걸림돌이었기 때문이다.
‘wowz.kr’의 데이터 구성 형식은 다음과 같다. 각 키(Key)에는 서버, 시간, 아이템 ID로 작성한 뒤 밸류(Value) 항목은 시간대별로 가격 정보를 기록했다.
이렇게 개발하면서 발견한 장점도 있는데, 키-밸류 스토어에서 각 키는 다른 서버에 저장되어 있어서 병렬처리를 할 수 있다는 것이다. 1개 키를 조회할 때와 여러 개 키를 조회할 때 시간 차가 거의 없어서 데이터를 늘렸을 때도 검색 속도를 보장할 수 있다.
결국 그가 만든 ‘wow.kr’은 7개월치 데이터가 쌓인 뒤에도 이전과 큰 속도차이 없이 서비스가 계속됐다. 월 비용 지출도 만 원 정도 선에서 끝났다. 딱히 관리를 하지 않았음에도 문제없이 작동됐고, 새로운 데이터는 자동으로 반영됐다.
그는 마지막으로 “이런 서비스를 게임에서 직접 제공하면 더 좋을 것 같다. 한편으로는 기획자들이 게임 내 경제를 분석할 때 경매장 거래를 추적할 수 있으면 도움이 많이 될 것 같다”며 강연을 마무리했다.