사실 인기있는 강연은 아니었다. 학생 참관이 제한됐고 게임 분석툴 개발자나 빅데이터 엔지니어에게 어울리는 강연이었기 때문이다. 강연 내용도 관련 실무 경험이 없다면 이해하기 힘들 법한 이야기들이었다.

그러나 모바일 게임 시장에서 보이지는 않지만 거대한 축으로 성장한 모바일 앱 분석 솔루션 관련 강연을 그냥 지나칠 수는 없는 노릇이었다.

아이지에이웍스의 백정상 개발팀장은 모바일 앱 분석 솔루션을 개발하면서 사용자의 다양한 요구사항을 만족시키기 위해 재설계한 아키텍쳐와 그 구현에 대해 설명하고 라이브 마이그레이션을 진행하며 얻은 경험을 공유했다. 덕분에 평소 잘 접할 수 없었던 솔루션 개발자들의 도전과 해결책 등을 들을 수 있었다.

▲ 아이지에이웍스 백정상 개발팀장


에드브릭스(adbrix)의 태동

애드브릭스는 아이지에이웍스에서 제공하는 모바일 앱 애널리틱스 툴이다. 마케팅 유입을 트래킹하고 마케팅 성과 및 매출을 분석, 앱 내 주요지표를 분석하는 역할을 한다.

애드브릭스는 2013년 첫발을 내디뎠다. 2013년은 스마트폰 게임 시장의 골드러시 시절로 당시 아이지에이웍스는 모바일 앱 마케팅에 열을 올리고 있었다. 그때 고객들은 유입 유저의 DAU(Daily Activity User)와 리텐션을 매우 궁금해했다. 더불어 어떤 마케팅 채널에서 효과가 가장 좋았는지도 궁금해했다.

당시 데이터 분석툴 선택지는 플러리(Flurry), 해스오퍼스(has offers), 콘타젠트(Kontagent), 픽스패널(mixpanel) 정도가 있었는데 이 툴 모두 마케팅 성과지표를 보여주지 않았다. 또한, 웹 마케팅 위주의 분석 지표를 제공해 모바일에는 적절하지 않았다. 즉 모바일 앱 마케팅 성과를 측정하기 편리한 툴이 없었다는 뜻이다.

아이지에이웍스는 모바일에 적합한 데이터 측정 도구를 빠르게 만들기 위해 필수적인 요소를 기반으로 하여 앱 마케팅 트래킹 링크와 그 성과를 측정할 수 있는 도구를 만들었다. 이 도구는 신규 유저 유입과 리텐션 그리고 액티브 유저 등 앱의 기본적인 지표를 분석할 수 있는 도구였다.

초기 구성은 트래킹 웹 API를 거쳐 스토리지에 저장된 데이터를 분석하고 분석 데이터를 보여주는 단순한 구성이었다.

▲ 초기 구성.


모바일 시장의 고도화, 도구의 고도화

간단한 구조로 되어 있는 애드브릭스는 모바일 시장의 고도화에 맞춰 다른 기능도 요구받게 된다. 모바일 시장이 고도화, 복잡화됨에 따라 주요 마케팅 지표가 증가했기 때문이다.

마케팅 비용과 유저 매출 간의 ROI(투자 수익)는 어떤지, 어떤 마케팅 매체가 앱에 잘 어울리는지, 마케팅으로 유입된 유저는 어떤 행태를 보이는지, 어떤 아이템이 잘 팔리는지, 언제 처음 구매하고 재구매를 하는지, 언제 이탈하는지, 어떤 국가, 성별, 연령 유저들이 주로 이용하는지 등등 다양한 마케팅 지표를 분석해야 될 필요성이 대두했다.

중견 업체들은 이렇게 변화한 시장에서 어려움을 겪었다. 앱을 잘 만들기도 버거운 상황에서 앱 마케팅에 대한 깊은 이해가 필요한 분석 툴을 만들기는 쉽지 않았다. 이는 대형 개발 업체도 마찬가지였다. 이들은 자체 분석팀을 꾸려 분석할 수 있는 역량이 있었으나. 국내, 해외 매체와의 협업이 문제가 되는 성과 트래킹 기능을 직접 개발하기는 어려워했다. 그래서 애드브릭스 팀은 애드브릭스를 한 단계 발전시키기로 마음먹는다.

▲ 급격한 상승세를 기록했다.

이 당시 애드브릭스의 고객은 급격히 늘어가던 상황이었다. 수백여 앱만 관리하는 상황이 수만여 앱을 관리하는 상황이 됐고, 수백만 액티비티만 관리하면 되던 상황이 수백억 액티비티를 관리해야 하는 상황으로 바뀌었다. 고객이 원하는 많은 기능을 빠르게 제공하면서 안정적인 기반으로 시스템을 개선해야 하는 도전에 직면한 것이다.

애드브릭스는 먼저 트래킹 시스템을 개선하기로 했다. 대규모 트래픽 유입을 대비해 시스템 분산이 가능한 대용량 데이터 스트리밍을 하기로 했다. 데이터 레이크도 필요했다. 데이터 레이크에서 여러 시스템이 데이터를 활용할 수 있으면 페이스북과 트위터와 같이 대규모로 트래픽에도 안정적인 서비스를 제공할 수 있기 때문이었다.

또한, 데이터양에 상관없이 스케일 아웃을 통해 분석 시간을 줄일 수 있는 데이터 분석 시스템도 고려했다. 기존 방식과 다르게 분석 배치 프로세스를 돌릴 때만 비용을 지불할 수 있게 변경하고자 했다.



무중단 업데이트의 필요성

설계도도 만들었고 관련 기술도 학습했지만, 아주 커다란 문제가 남아있었다. 바로 '새 시스템으로 갈아타기'. 애드브릭스는 국내 대다수 마케터들이 사용하는 툴로 트래킹 서비스 특성상 24시간 365일 서비스가 진행되어야 한다. 그렇기 때문에 애드브릭스 팀은 단 한 번도 정기 점검을 해본 적이 없었다.

즉 '마치 없었던 일처럼' 자연스럽게 시스템을 교체해야 하는 상황에 직면한 것이다. 사실 무중단 업데이트는 매우 어려운 작업이다. 백정상 애드브릭스 개발팀장은 중단 업데이트가 바르다고 생각했다. 그러나 그들은 일단 기존 시스템은 고객의 요구에 부응하게 하고 그 와중에 새로운 시스템을 구현하고자 방향을 잡았다.

기존 데이터를 데이터 레이크에 올린 뒤 양쪽에 동일한 데이터를 입력해 동일한 결과를 출력하는지 확인하는 방법이었다. 동일한 결과를 출력한 지 2주일이 지나면 '마치 없었던 일처럼' 시스템을 교체할 수 있겠다고 판단했다.

▲ 달리는 차량 바퀴를 교체하는 것과 같다.

그런데 실제로 하려고 하니 시스템 양쪽에 실시간 데이터를 전달할지, 기존에 저장한 데이터를 어떻게 데이터 레이크에 옮길지, 양쪽에서 동일한 결과물을 출력하는지 어떻게 확인할지 시스템을 교체하는 동안 유입되는 신규 유저 액티비티는 어떻게 보관할지 막막한 상황에 직면하게 됐다.

이러한 문제를 해결하고자 그들은 중간에 액티비티 큐를 하나 두고, 큐에 있는 데이터를 읽는 워커가 양쪽으로 데이터를 전달하게 했다. 기존에 저장된 스토리지 데이터는 레플리카를 제작해서 데이터를 안전하게 복사하고 복사한 데이터를 데이터 레이크에 올리는 방식이었다.

이렇게 하면 기존 시스템은 기존처럼 고객에게 지표를 제공하고 새 시스템은 개발자가 직접 지표를 확인할 수 있을 것으로 생각했다.


문제 없던 목요일, 지옥 같았던금, 토, 일

실제 작업은 목요일 새벽에 진행했다. 예상과는 다르게 큰 문제 없이 부드럽게 바로 교체에 성공했다. 아니 성공한 줄 알았다.

금요일 분석 결과에서 신규 유저 수치에 이슈가 발생한 것을 발견하기 전까지 말이다. 특정 앱에서 신규 유저 수치가 비정상적으로 많이 노출되는 것이 발견됐다. 개발팀은 로 데이터 부분에 문제가 있다고 생각하고 키네시스 스트림 리텐션 피리어드를 1주일로 연장했다. 동시에 분석을 지연시키고 바로 로직을 확인했다.

로직에 문제가 있었다. 데이터 저장 시 유저 번호를 발급하는 로직에 문제가 있었고, 이를 해결하기 위해 새로운 스트림 워커에서 데이터를 리스토어했다. 리스토어된 데이터에서 분석을 다시 진행했다. 데이터 유실을 방지할 수 있었고 대용량 스트리밍의 위력을 확인할 수 있었다.


문제는 토요일에 또 발생했다. 그런데 아무리 고민을 해봐도 문제의 원인을 찾을 수 없었다. 소위 '멘붕'이 찾아왔다. 백 개발팀장의 손이 떨렸고 시말서를 쓸 생각마저 했다. 결국 CTO(chief technical officer)까지 나서 모든 팀원이 밤새 원인을 찾아보기 시작했다.

문제의 원인은 두 가지였다. 하나는 리스토어 데이터에 기존 수집한 데이터를 추가한 게 문제였고 다른 하나는 참고했던 앱, '양파기사'가 구글 플레이 피처드를 받아 실제로 신규 유저수가 갑자기 10배 정도 상승한 사실을 모르고 있었다는 것이다. 개발팀 내에서는 구글 플레이 차트를 보기 전까지 이를 파악하지 못하고 오류인지만 알았다.

문제점을 발견하고 일요일에 목요일, 금요일, 토요일 배치 프로세스를 다시 돌렸다. 한 배치 프로세스를 돌리는데 2시간가량 소요됐고 무사히 마이그레이션을 완료할 수 있었다.

금요일부터 시작한 작업을 일요일에 마칠 수 있었다. 데이터 유실도 없었고 데이터 수치도 모두 정상이었다. 마케팅 성과 측정에 전혀 문제가 없었다. 다만 분석결과는 2일 지연되어 제공됐다. 주말에 해당 툴을 사용하지 않았다면 마이그레이션을 느낄 수 없을 정도의 여파였다.


라이브 마이그레이션 분투기

백정상 개발팀장은 라이브 마이그레이션 작업 중 있던 일과 해결방법을 소개하고 다음과 같은 말을 하며 강연을 끝마쳤다.

"백조는 물에 떠 있기 위해 수면 아래에서 끊임없이 발을 움직이고 있다. 개발도 이와 비슷하다. 빛나는 애널리틱스 툴 이면에는 개발자와 관계자의 피와 헌신이 있다. 그렇기에 빛날 수 있다. 라이브 마이그레이션은 매우 어려웠지만, 이를 지혜롭게 극복했다. 모든 개발자들, 파이팅이다."