MMP 데이터 분석 파이프라인 구축기 - 1탄


태피툰의 Genie입니다

genie_c_small.jpg

태피툰 플랫폼팀 데이터엔지니어 지니(Genie)입니다. 입사와 함께 팀이 생겼고, “데이터 엔지니어로서 어떤 일을 해야하고, 팀의 방향은 어떻게 가야하는가” 라는 질문부터 시작해서 1년동안 회사에 “Data Driven” 환경을 만들기 위해 프로젝트들을 진행했습니다. 백엔드 서버의 로그와 사용자 히스토리를 수집/가공/분석하는 작업을 통해 최종적으로 서비스 주요 지표를 볼 수 있는 환경을 제공하고, BI(시각화 툴)을 이용해서 방대한 양의 데이터를 한눈에 보기쉽게 하는 시스템을 구축하고 있습니다.

cover-wide_NEW03.jpg

태피툰은 성장하고 있는 서비스이지만 그럼에도 불구하고 아직은 스타트업이다보니, 사용자 이벤트 데이터를 수집하는 시스템을 직접 구축하는 대신, 상용 모바일앱 어트리뷰션 솔루션들을 이용해서 운영과 퍼포먼스 마케팅을 하고 있습니다. 태피툰은 여러 MMP(Mobile Measurement Partner)를 사용하고있는데요, 오늘! 태피툰의 첫번째 기술 블로그 콘텐츠로, <MMP 데이터 분석 파이프라인 구축기>에 대해 이야기 나누어보려고 합니다.

CustomDashboard_us-en.png

여기서 MMP(Mobile Measurement Partner)란, 앱 유저 유입 및 유입 후의 인앱 액션을 분석할 수 있는 서비스입니다. MMP라는 3rd party를 통하여 광고 성과를 객관적으로 판단하고, 실시간으로 쌓이는 데이터를 통해 매체의 성과 판단과 최적화를 진행할 수 있습니다. 보통의 MMP에서는 데이터를 분석한 정보를 Dashboard를 통해서 볼수도 있습니다. 그리고 이 데이터들의 모든 정보를 자세하게 볼 수 있는 Raw 데이터를 직접 저장할 수도 있는 API도 제공해주고 있는데요, 데이터를 광고나 이벤트별로 다운받아서, 필요한 지표를 추가적으로 계산하거나 분석에 사용할 수 있습니다.

회사 규모가 커지고 데이터가 늘어나는 시점에서, 이벤트 데이터를 효율적으로 활용해야하는 니즈가 커진 상황! 직접 로그를 설계해서 수집하는 시스템을 바닥부터 만들기에는 매우 많은 시간과 개발 리소스를 투자해야 했습니다. 그래서 지금 당장 사용할 수 있는 MMP에서 제공하는 Raw데이터를 활용해서 빠르고 쉽게 구축하고자 했습니다. 데이터 양이 늘어나고 있는 스타트업, 또는 GA, Braze, Appsflyer등의 솔루션을 사용하고 있는 스타트업에 종사하고 계시는 데이터/백엔드 엔지니어분들께서 이 글을 참고 하시면 어렵지 않게 분석 파이프라인을 구축하실 수 있으실 것이라고 생각합니다.

기존 시스템의 문제점

태피툰에서 데이터엔지니어링을 담당하는 개발자는 1명(본인)이고, 기술이사님과 DevOps 엔지니어 팀원과 함께 다양한 논의를 해가면서 태피툰 데이터 플랫폼을 만들어가고 있습니다. 이 프로젝트를 포함해서 데이터 파이프라인 구축 프로젝트를 진행할 때 가장 어려웠던 점은 혼자서 해나가야 한다는 것이었습니다. 그렇기 때문에 기술스택을 선정할 때 중점을 두었던 포인트는 AWS 에서 Managed 서비스를 지원하는지 여부였습니다. AWS Korea 스타트업팀 아키텍처 분들의 가이드를 받아 아키텍쳐를 완성해나갈 수 있는점, 영어가 가능하다면, 24시간 언제든 5-10분 안으로 각 인프라별 AWS 서포트를 받을 수 있는점이 인프라를 결정하는데 큰 역할을 했습니다.

Insight (1).png

기존에는 자체 스케줄러를 개발하여, 매일 오전, 하루 한번 MMP에서 제공하는 API 를 통해서 Raw 데이터를 다운로드 받아 이를 MongoDB 에 저장하였고, 그 데이터를 바탕으로 간단한 대시보드를 만들어서 사용했었습니다. 이후, 주기적으로 동기화 해주어야하는 API 의 구조적인 문제로 인해 실시간으로 수집되는 데이터를 확인하기 어려운 시스템이었기 때문에, 이후 개선 작업을 통해 실시간으로 데이터를 전달받을 수 있는 또다른 API로 전환했지만, 여전히 여러가지 문제점이 많았습니다.

MongoDB 인스턴스의 스펙이 좋지 않았고 replica 구성이 되어 있지 않았기 때문에 분석 용도로 사용하는것은 엄두도 못내었고, 간단한 쿼리조차도 1-2분을 기다려야 했었지요. 시각화를 하는것도 어려웠고, 문제가 생기면 디버깅을 하는것도 쉽지 않았습니다. EC2 인스턴스이기 때문에, 데이터가 증가하는 시점을 잘 맞춰서 용량 관리도 해주어야 했으며 이또한 모니터링이 제대로 이루어지지 않았습니다.

instance.png

가장 큰 문제는, 효율적으로 데이터가 쓰여지지 않고 있다 보니, 문제가 발생한 한참 뒤에, 누군가가 우연히 발견을 해서 버그를 수정 하는 등 유지보수가 제대로 되고있지 않았습니다. ‘언젠가'의 날을 위해서, 데이터가 유실되지 않도록 받고만 있는 것이었지요.

data.png dev_cell.png

2달전, 시스템에 버그가 있어서 데이터를 유실하고 있다는 것을 목격, MMP 데이터 파이프라인 구축 프로젝트의 우선순위가 높다고 판단했고, 바로 기획을 시작했습니다. 가장 먼저 고려했었던 방법은 MMP에서 제공하는 실시간 데이터 전송 서비스였습니다.

appsflyer.png

S3버킷(또는 Google Storage)을 지정해주면, 실시간 데이터들을 저장해주는 솔루션이었습니다. 개발 시간을 거의 투자하지 않고도 원했던 요구사항을 대부분 충족하여 실제 사용을 검토해보았으나 문제는 솔루션을 도입하는 가격이 굉장히 비싸다는 것이었습니다. 골치 아프지 않게 돈을 내고 서비스를 이용하느냐, 아니면 직접 구축하느냐의 선택길에서, 그정도의 금액이라면, 직접 구축해보는것이 더 낫겠다는 결정을 내렸고, MMP에서 Raw 데이터를 직접 수집/가공/분석을 하는 자동화 파이프라인 구축계획을 시작했습니다.

To Be Continued…

mmp-datamap.png


Genie