데이터 수집 Platform

김지우·2022년 7월 4일
0

우리 Product에서 일어나는 사용자 행동 패턴 수집/분석을 위한 플랫폼 검토를 위해 자료 조사를 한 내용을 기록한다. 전에 있던 직장에선 SA(Samsung Analytics)라는 서비스가 있어서 해당 서비스에서 제공해주는 SDK를 이용하면 쉽게 기록이 가능했다. 예를 들면 [Screen ID + Activity ID + Parameters] 이런 식으로 로깅을 하면 데이터 산출은 알아서 해주는.. 무튼 이와 유사한 플랫폼을 찾는 것이 목적이다.

해당 서비스가 충족해야 할 조건들은 아래와 같다.

  • Screen+Action에 대한 수집이 가능할 것
  • 수집된 데이터에 대한 유연성있는 Query가 가능할 것
  • A/B Testing을 제공할 것
  • App 내 Crash 발생 시 정보를 수집할 것

Firebase (Google Analytics 4) & Google Optimize

그렇게 자료조사를 하다보면 바로 마주치게 되는 것이 FirebaseGoogle Analytics 다. 일단 이 둘이 어떤 관계를 갖는 것인지에서부터 정리하고자 한다.

무작정 Firebase에 프로젝트를 하나 만들었더니 GA에서도 바로 보인다. 이 말인 즉, 둘이 내통하는 게 있다는 뜻이다. 실제로 Firebase에서 제공하는 몇 몇 Feature 들은 GA 제공된다고 그리로 넘어가라고 써있기도 했다. Google Analytics for Firebase 공식 도큐먼트를 참조하면 아래와 같은 내용을 볼 수 있다.

Google 애널리틱스는 Firebase의 핵심이라고 할 수 있습니다. 애널리틱스는 Firebase 전체 기능에 통합되어 Firebase SDK를 사용하여 정의할 수 있는 최대 500개의 고유한 이벤트에 대한 무제한 보고를 제공합니다.
...
애널리틱스는 그 밖에 다양한 Firebase 기능과 통합됩니다. 예를 들어 알림 작성기를 통해 전송한 알림 메시지에 해당하는 이벤트를 자동으로 로깅하고 각 캠페인의 효과에 대한 보고서를 제공합니다.

아무튼 둘이 이제는 한 몸이라는 소리다. 실제로 Firebase에서 보이는 Report들과 Dashboard 내용은 GA4 Console에서 동일하게 보인다.

데이터 로깅

GA는 기본적으로 Event와 Session 기반 수집을 하고, Page 로깅도 지원한다. 조사해보니 요즘 대세는 Event 기반이어서 (사용자 Action/Funnel 분석에 따른 개인화에 좀 더 용이하다는 듯) 최근 나온 Analytics Tool들은 이벤트 로깅만 제공하는데, GA는 Page 리포트를 주어서 일단 우리 요건을 충족한다.

로깅을 위해 먼저 Project에 GA4 연동을 했다.

  1. Create GA4 or Firebase Project
    -> Firebase에서 만들어도 GA와 연동이 가능하니 어느 곳에서든 Project 설정을 하면 됨
  2. Import Firebase SDK
  3. Initialize Firebase adding configs
    -> 1번에서 프로젝트 세팅이 끝나면 apiKey, authDomain, projectId, measurementId 등 데이터 수집에 필요한 설정값을 발급해주니 프로젝트에 설정 추가

Event 로깅

const analytics = getAnalytics();

logEvent(analytics, 'myEventName', { 
    'data' : 'helloWorld'
});

이렇게 입력한 event 로깅을 하면 analytics console 에서 볼 수 있다. 내가 추가한 event 외에 기본적으로 제공되는 event 들도 있다. page_view, scroll, first_visit, session_start 등등..

Page 로깅

Page 로깅은 별도의 코드를 추가할 필요가 없다. 500 이나 404 에러 처럼 발생 시 Nuxt에서 자체적으로 에러 화면을 띄워주는 경우도 카운트를 해주고 있다.

event와 page를 함께 묶어서 '어느 page에서 어떤 event가 몇 번 발생했는지'와 같은 데이터가 보고 싶으면 위 표에서 이벤트에 필터링을 걸면 된다.

Crash Report

사실 웹에서는 모바일 앱처럼 꽥 하고 서비스가 죽는 경우를 잘 못봤다. 그저 브라우저가 로드를 못해서 브라우저 단에서 발생하는 에러나, 화면 전환을 해주지 못할 뿐. 그래서인지 GA에서도 Crashlytics 라는 죽는 경우에 대한 로그 수집을 자동으로 해주는 기능이 있기는 하지만 모바일 앱에 대해서만 제공한다.

그래서 웹은 별다른 방법이 없는 듯 하고, 앞서 로깅에 썼던 함수로 exception 로깅을 하라고 구현이 되어있었다. parameter에 description과 fatal을 기록하라는 가이드와 함께.. 사실 저 eventName은 쓰기 나름이고 exception이라고 명명한다해서 별다른 보고를 생성해주는 것도 아니다. 결국 위의 event와 동일 레벨이므로, 알아서 잘 활용해서 excetion 로깅을 하면 된다. parameter에 stack trace를 넣어준다던가 exception 별로 event name을 다르게 해서 구분을 명확히 한다던가 하는 등의 노력이 필요하다.

A/B Test

A/B Test는 Firebase에서 제공하긴 하지만 모바일 전용이다. 웹은 Google Optimize라는 다른 Google 제품을 이용하면 된다. 무료 버전에서도 사용할 수 있다.

Google Optimize를 연동하려면 라이브러리를 코드에서 사용할 수 있게 해주는 스니펫을 코드에 추가해주면 된다. GA와 마찬가지로 해당 스니펫은 Optimize Id를 넘겨주게 되어있다.

  1. Create Google Optimize Container -> Container는 Workspace 개념
  2. Link the container with GA 4 -> 이걸 연동하는 게 핵심. 연동해야 A/B Test 등의 결과가 어떤지 확인할 수 있음.
  3. Add snippet or Add Google Optimize tag setting on Google Tag Manager -> 코드 상 설정
  4. Create an experiment within the container -> A/B Test 말고도 다변수 Test, Redirection Test 등이 있음

4번에서 삽질 엄청 했다. 일단 대충 localhost 띄워서 개발하고 있었는데 사이트 URL을 입력하라고 하고(이거 하자고 deploy까지 하자니 배보다 배꼽이 커서 그냥 ngrok으로 개발 중인 포트 열어버림), 최적화 도구 플러그인도 설치해주어야했다. 또, 3번 항목에서 나는 Google Tag Manager로 Tag 관리를 하는 방향으로 잡아서 Optimize tag를 추가하려니 Analytics tag도 추가해야했고, 둘 간에 Trigger 관계도 설정해줬어야 했다(다 가이드에 있는 내용인데 찾기 복잡했다). Optimize도 초면인데 Tag Manager 내용까지 파악하려니 오래 걸렸다. 심지어 Tag를 넣었는데도 최적화 스니펫이 구버전이라는 에러까지 자꾸 먹여서 고생했다. 결국 GTM 포기하고 스니펫 삽입으로 방법을 변경함.

우여곡절을 겪고 4번까지 넘어오면 위의 설정들을 마치고 드디어 A/B Test를 진행할 수 있다. 먼저 Test 할 대안들을 그려줘야 한다. 좀 편했던 건 앞서 말한 최적화 도구 플러그인이 크롬에 설치되면 코드 수정 없이 대안 화면을 만들어 낼 수 있다는 점이었다. 사이트 화면이 DOM Element 단위로 쪼개져서 보여지고 Element를 선택하면 쉽게 요소 편집을 할 수 있다. 사실 데이터 수집 Platform들은 개발자보다 마케팅이나 PM 직군들에게 좀 더 유용할텐데 그런 비개발자들이 다루기에도 좋아 보인다.

이후 이 테스트를 통해 어떤 결과를 보고싶은지 설정을 추가한다. 버튼 색깔을 바꿨을 때 특정 event 클릭률이 증가할지 등의 추이를 보고싶으면 해당 event 이름을 기입해주면 테스트가 진행됨에 따라 결과를 볼 수 있다. 이걸 위해 Optimize Container에 GA를 꼭 연동해야 한다.

Google Analytics Data API

GA는 Analytics 데이터들을 Query 할 수 있는 Big Query라는 기능을 제공하지만 이 또한 모바일에서만 제공된다. 대신 사용할 수 있는데 GA Data API 이다.

위와 같이 구현하면 SQL 구문을 사용하진 않았지만 개발자에게도 친숙하게 데이터 접근이 가능해진다.

Amplitude Analytics

Amplitude는 최근 스타트업 사이에서 많이 사용되고 있으며, GA가 제공하는 기능을 어느정도 충족하면서도 GA 유료 버전에 비해 훨씬 저렴한 플랜이 있어서 대기업들도 쓰고있다고 한다. 웹, 모바일, Unity를 지원한다. (이건 직접 사용해보진 않아서 공식 Document 자료와 Demo 화면을 가져다 썼다.)

Demo를 직접 사용해보니 GA 보다 훨씬 다양한 Template을 제공하고 있어서 Dashboard Customizing이 용이해보였다. 그리고 개인적이지만 GA는 보자마자 숨이 턱 막힐만큼 어디에 어떤 메뉴가 있는지 알 수 없었던 거에 비하면 UI가 깔끔하고 간결했다.

로깅

Amplitude가 GA와 가장 다른 점은 Page 기반 수집이 이루어지지 않는다는 것이다. Event 기반으로만 집계가 이루어진다. Client 단에 SDK를 설치하고 작업하면 된다.

Crash Report

GA와 마찬가지로 별도의 Crash report는 없으며 exception을 event화 해서 자유롭게 로깅하면된다. GA도 그렇겠지만 이 경우 예측하지 못하는 에러에 대해선 전혀 로깅할 수 없다는 점이 맹점이다.

A/B Test

Amplitude Experiments라는 제품에서 A/B Test를 제공하는데, GA 보다 깔끔하고 친숙한 UI를 제공한다.

Query

비개발자에게도 친숙하게 Query를 생성할 수 있게 해주는 화면이 제공되며,

아래와 같이 진짜 SQL Query를 날려서 차트를 생성할 수 있게 하는 기능도 존재한다.

이런 면에서 사람들이 GA에서 Amplitude로 이주를 하나보다.

기타

개인적으로 좋다고 생각했던 건 Release 된 버전 별로 report result를 볼 수 있다는 거였다. 어느 버전에서 어떤 요소가 향상됐는지 아는 것은 중요하기 때문이다.

그리고 product가 여러 개가 되었을 때 해당 product들 사이에서 event Id들이 공유된다는 점이다. 예를 들어 우리 서비스가 웹, Android, iOS 등으로 나뉘어지면 Analytics 자체는 따로 할지언정 안에서 발생하는 event 들은 동일할 것이기 때문에 플랫폼이 다양해지면 무척 좋은 기능이 될 것 같다.

Adobe Analytics

Adobe Analytics도 역시나 대기업에서 만들어서 그런지 GA 다음으로 점유율이 높은 플랫폼이다. 그런데 공식 사이트가 친절한 척 하지만 불친절하다. 튜토리얼은 제공하지만 눌러보면 영상이 없는 경우도 있고.. 무엇보다 Free Trial이 없어서 답답해 죽겠다.

Mixpanel

참고

profile
천방지축 어리둥절 빙글빙글

0개의 댓글