아이지에이웍스 백정상 팀장은 19일 ‘게임테크 2014’ 컨퍼런스에서 라이브 오퍼레이션 바이 애드 브릭스라는 제목으로 Node.js와 mono.db를 이용한 멀티 테넌트 인프라 구축 사례를 소개했다.
백정상 팀장은 라이브 오퍼레이션을 개발하게 된 이유는 개발사를 위한 서비스를 제공하기 위함이었다고 설명했다
초기에는 클라우드 서버를 대여하거나 네트워크 라이브러리를 공개하는 등의 방안을 생각했지만 게임은 개발사가 가장 잘 만들 것이라고 결론을 짓고 콘텐츠가 아닌 라이브 운영 지원 서비스를 개발사가 게임 제작에 집중할 수 있도록 운영이나 관리 가이드 툴이 필요했기 때문이라고 설명했다.
대부분의 개발사가 개발 일정 동안 게임 개발에만 집중하기 때문에 게임 제작이 완료 됐다고 하더라도 운영,관리 툴을 만드느라 출시 일정이 연기되는 경우가 발생하곤 한다.
실제로 백 팀장도 2013년 3월 게임이 완성됐음에도 같은 해 8월에 출시했다고 경험담을 소개했다.
운영 지원툴인 라이브오퍼레이션은 공지를 송출하고, 이벤트 진행, 실시간 유저 리포트 등의 기능을 지원하는 것을 목적으로 했다.
요구 사항은 쉽게 사용할 수 있는 무료 서비스, TCO 최소화 시키고 하나의 클라우드 인프라에서 모든 앱이 서비스 가능하고 유저 그룹에 대한 실시간 타겟팅이 가능해야 한다는 것이다. 또한 실시간으로 결과가 리포트되야 하고 365일 24시간 운영가능한 것을 목적으로 삼았다.
특히 가장 중요한 것은 아이지에이웍스가 서비스하는 다양한 앱을 동시에 지원할 수 있어야 했다. 이를 해결하기 위해 선택한 방안이 클라우드 컴퓨터 서비스를 이용한 멀티 테넌트다
이를 만들기 위해 데이터베이스는 몽고DB를 선택했다. 스키마 제약이 없고 자바스크립드 기반이고 인덱싱이 다양하게 지원하기 때문에 다양한 정보에 대응할 수 있기 때문이라고 백팀장은 설명했다.
도큐먼트 저장소는 MSON을 사용했다. 메모리 맵드 파일 기반으로 일정 수준 메모리 디비 역할도 하고 리드가 빠르고 스키마 없어서 일반화 해서 데이터를 관리 하지 않아도 되며 몽구스 ODM을 쓰면 node.js로 빠르게 구현 가능 할 것으로 예상했기 때문이다.
개발 환경은 프론트 APS.net, 백앤드는 node.js, 데이터베이스 몽고 db, ODM 몽구스js, BOD 모카, OS 우분투, SDK는 ios 안드로이드를 기반으로 제작했다.
멀티 테넌트 인프라 스트럭쳐를 구축하면서 가장 중요한 것이 자신의 앱이 다른 앱과 섞이지 않는 안전한 분리 운영이었다.
이는 비용효율적인 1앱 1컬랙션을 선택해 효율적인 비용 활용을 선택했다. 병렬성 이슈가 있었지만 와이어트 타이거가 몽고디비에 도입되면서 도큐먼트 레벨 라킹이 지원되면서 해결됐다.
마지막으로 백 팀장은 “몽고DB는 많은 좋은 점이 있지만 절대 일괄 입력과 업데이트는 전체 서비스에 영향을 미치니 금지해야 한다”고 강조하며 발표를 마쳤다.
Comments