Intro
서비스를 운영하는데 필요한 트랜잭션(transaction) 로그가 아닌, 고객의 행동 로그를 쌓기 위해서 Google Analytics4와 Bigquery 이용하였다.
- GTM을 이용하면 개발자의 도움이 없어도 간단한 자바스크립트, HTML 지식으로 원하는 데이터를 수집할 수 있었다.
- 또 무료로 구글의 빅쿼리와 연동하여 원본 데이터에 접근이 가능해졌으며, 빅쿼리를 이용해 고객 행동 데이터를 Jupyter Notebook나 Redash와 같은 BI툴에 연동할 수 있었다.
일단 되는대로 다 쌓자!
물론 소제목처럼 정말 되는대로 다 쌓자는 아니었다. 우선 마케터, PO, 기획자와 함께 서비스의 주요한 퍼널에 초점을 두고, 필요한 이벤트를 추려냈다. 그리고 각 이벤트에 추가적으로 필요한 속성값(Property)을 매개변수로 설정하였다. 이러한 작업을 반복하여 Tag와 Trigger를 만들어 배포했고, 배포된 고객 행동 이벤트를 빅쿼리에 일별로 적재했다.
문제는 이벤트 로그가 없어서가 아니다
회사에서 겪을 수 있는 상황
로깅을 신경쓰지 않고 진행 ⇒ 특정 기능 배포 ⇒ 성과를 확인하려고 하니, 데이터에 누락이 있음을 발견(혹은 잘못된 로깅) ⇒ 다시 로깅을 한 후, 배포 ⇒ 과거 성과는 알 수 없음 이런 경우를 방지하기 위해 데이터 로깅도 항상 신경쓰고 + 데이터 QA도 진행해야 함
출처: https://zzsza.github.io/data/2021/06/13/data-event-log-definition/
빅쿼리에 내가 정의한 고객 행동 데이터가 차곡차곡 쌓여 가는 것을 보고 처음에는 매우 기뻤지만, 위에 서술한 상황이 글자 하나 안 바뀌고 그대로 나에게 일어났다. 로그를 통해 성과와 고객 데이터를 분석하려고 하니, 잘못된 로깅이 있음을 발견했고, 태깅을 수정하여 다시 배포해야 했다.
하지만 이미 늦었다. 잘못 들어온 해당 로그 데이터는 믿을 수 없게 되면서 과거의 성과 또한 믿을 수 없게 되었다. 데이터 QA를 제대로 진행하지 않은 탓이렸다.
그리고 수집하고 있는 데이터 중에 분석에 필요하지 않는 데이터들이 있었다. 분석에 필요한 이벤트를 추려냈다고 하지만 여전히 필요하지 않은 이벤트와 속성(key, value)이 존재했다. 또 막상 분석을 하려고 하니, 필요한 데이터가 적재되고 있지 않다는 것을 확인하였다.
이러한 문제를 방지하기 위해서는 “로그 설계”에서 부터, 데이터 분석가의 관점에서 “이 데이터가 쌓이면 분석에 어떻게 활용할 수 있지?”를 깊게 고민했어야 했다. 또 모든 지표를 로깅할 수 없기에, 어떤 지표를 핵심 지표로 볼 것인지 정의를 명확하게 내렸어야 했다.
결국 이벤트 로깅의 핵심은 ‘필요한’ 데이터를 ‘정확’하게 수집하는 것이다.
배운 점
행동 이벤트 로그 설계에 관련한 글에서도 결국 ‘필요한’ 데이터를 ‘정확’하게 수집하는 것이 그 골자였다.
그리고 결국 우리가 로그를 적재하는 이유도 어떤 목적을 가지고 분석하기 위해서라는 것을 잊으면 안될 것 같다.
배운 점을 정리하면 다음과 같다.
첫 번째, 어떤 로그 이벤트를 쌓든지 간에 “로그 설계”가 가장 중요하다. 분석가뿐만 아니라, 모두가 “이 로그 데이터가 쌓이면 어떤 분석에 활용할 수 있지”를 깊게 고민해야 한다.
두 번째, 데이터 QA와 로깅 작업은 항상 신경 쓰고 제대로 해야 한다. 모든 문제는 이벤트 로그가 없어서가 아니다. 로그 데이터를 신뢰할 수 없기 때문에 생기는 문제이기 때문이다.
세 번째, 이벤트 로그 설계한 내용을 잘 기록해 두어야 한다.
네 번째, 무작정 많은 데이터를 수집하기보다는 ‘필요한’ 데이터를 ‘정확’하게 수집해야 한다.
추가로 이벤트 로깅이 처음인 스타트업의 경우, 이벤트 로그 설계 자체가 어려워 시작을 못하는 경우가 있는데 차라리 도메인 지식을 활용해 현 시점에서 정말로 필요한 데이터를 빠르게 정의하고 데이터 로깅을 "시작" 해보는 것도 중요하다고 생각한다.
빠르게 일을 처리하는 것과, 정확하게 일을 처리하는 것에는 항상 Trade-off 가 있기 마련이라서, 처음부터 너무 정확하게 무엇을 하려고 한다면 시작도 못하는 경우가 많기 때문이다.
이러한 면에서 Google Cloud Platform은 쉽게 데이터 인프라를 구축할 수 있는 아키텍처를 제공해주기 때문에(i.e Firebase와 Bigquery, Airflow, etc) 어느정도 데이터 로깅에 대해 이해도가 생기면 빠르게 필요한 이벤트 로깅 작업을 진행하는데 도움을 줄 것이다.
참고 자료
'블로그 > 데이터 엔지니어링' 카테고리의 다른 글
[K8s] Pod & ReplicaSet & Deployment (0) | 2024.01.18 |
---|---|
[K8s] 쿠버네티스 알아보기 (0) | 2024.01.17 |
[K8s] 왜 쿠버네티스일까? (0) | 2024.01.17 |
[k8s] 컨테이너 오케스트레이션 등장과 개념 (0) | 2024.01.17 |