사내 핵심지표를 만드는 과정

clay
clay
Jan 12 · 11 min read

안녕하세요 🙌🏻 왓챠 Data Science (이하 DS)팀에서 데이터 분석가로 근무하고 있는 클레이입니다.

왓챠 서비스가 성장하면서 유저들의 행동 데이터가 더 다양하게 쌓이기 시작했고, 그에 따라 볼 수 있는 지표들도 점점 많아졌습니다. 하지만 이 모든 지표들을 수시로 트랙킹할 수 없기에, 지표들의 우선순위를 정하고 현재 왓챠 서비스 특징에 맞게 핵심지표들을 정의 및 대시보드화하는 작업을 DS팀에서 진행했습니다. 그래서 오늘은 지표 개발하시는 분들에게 조금이라도 도움이 됐으면 하는 마음으로 핵심지표 개발기를 살짝 풀어볼려고 합니다.

들어가기 앞서, 보안 상 데이터 수치의 직접적인 언급이 힘든 점, 양해 부탁드립니다.

핵심지표란

핵심지표 개발의 첫 스텝으로, 핵심지표와 세부지표를 구분할 필요가 있습니다. 서비스 상태를 알려주는 지표들은 무수히 많지만, 그 중에서도 서비스 핵심 기능들을 모니터링하고 서비스 성장이라는 큰 목표의 이정표가 되어주는 지표들이 존재합니다. 이러한 지표들을 핵심지표라고 부릅니다. 그리고 핵심지표의 증감 원인 설명을 보충할 수 있는 지표들이 세부지표가 되고, 필요에 따라 더 세부적으로 (ex. 플랫폼, 유저 코호트) 쪼개보는 경우도 있습니다.

핵심지표들을 관리하고 해석할 때 유의할 점들이 몇 가지 있습니다. 첫째로, 서비스 형태의 변화에 따라 지표들의 우선순위 및 필요성은 바뀔 수 있습니다. 그래서 핵심지표 개발 이후에도 서비스 변화에 따른 핵심지표 추가 및 수정에 대응이 필요합니다. 둘째로, 핵심지표의 성장에만 집중하는 것은 위험한 접근일 수 있습니다. 핵심지표는 너무나 많은 것들을 함축하고 있고, 회사의 궁극적인 목표는 서비스의 성장이지 핵심지표의 성장이 아니기 때문입니다. 타 블로그에 농구로 좋은 예시를 들어주셔서 인용하자면, 농구 시합에서 스코어보드는 승리를 향한 좋은 이정표가 되어줍니다. 하지만 득점 성공에만 집착하게 된다면, 선수 개개인의 플레이에는 집중을 덜하게 되고 팀 밸런스가 무너져 결국 승리를 놓치는 상황이 발생할 수 있습니다. 그래서 핵심지표도 목표를 달성하기 위한 용도보다는 현재 서비스 상태를 한눈에 파악하는 용도로 사용될 필요가 있습니다.

핵심지표 개발: AU (Active User / 활성 사용자)

AU (DAU / WAU / MAU)는 유저 활동성을 나타내는 핵심지표로서 왓챠를 포함한 많은 회사들에서 사용되고 있습니다. 언론에도 공개되는 흔한 지표라 지표 정의가 필요없을 듯 보이지만, 사내 지표로 사용될 때는 고려할 점들이 몇가지 있습니다. 서비스 특징에 맞춰서 활동성유저가 정의될 필요가 있기 때문입니다. 왓챠는 앱 로그는 Firebase, 웹 로그는 Google Analytics (GA)를 통해 빅쿼리에 적재해서 분석에 사용하고 있는데, GA도 AU를 필터를 설정해서 볼 수 있는 기능이 있습니다.

하지만 유용하게 쓸 수 있는 필터는 국가, 로그인 / 비로그인 여부 뿐이었고, 사내 지표로 사용되기 위해서는 고려해야 할 점들이 더 많았습니다.

1. 구독 & 로그인 여부

유저를 정의하는 첫 스텝으로서 구독과 로그인 여부를 따져야 합니다. 가능한 옵션이 총 세 가지가 있었는데, 첫째는 로그인 여부 상관없이 모든 유저, 둘째는 로그인한 모든 유저, 셋째는 로그인하고 구독 상태인 모든 유저였습니다. 왓챠에서는 로그인한 모든 유저들을 AU에 집계하기로 결정했는데, 이는 왓챠 서비스 특징에 기인합니다.

로그인 비구독자가 보는 왓챠 화면

왼쪽 위 사진과 같이 왓챠 서비스는 비로그인 상태에서 인트로 화면 및 회원가입 절차만 밟을수 있기에 유의미한 서비스 경험이 불가능합니다. 그래서 로그인 유저만 한정하기로 했고, 다음으로 구독 여부를 따질건지에 대한 판단이 필요했습니다. 비구독 유저들도 AU 집계에 포함시킨 가장 큰 이유는 왼쪽 아래 사진과 같이 이들도 홈화면 진입 및 탐색 및 일부 콘텐츠 시청 (ex. 가짜사나이, 좋좋소) 등 제한적인 활동이 가능하기 때문입니다. 왓챠 서비스 전체를 경험할 수 없지만 DS팀에서는 이러한 유저들도 어느 정도 서비스를 경험하고 있다 판단해 집계에 포함시켰습니다.

2. 계정 vs 프로필

왓챠는 현재 월 7,900원인 베이직 요금제와 월 12,900원인 프리미엄 요금제가 존재합니다. 두 요금제 모두 메인 프로필과 키즈 프로필이 자동으로 생성되고, 프리미엄 요금제의 경우는 메인 프로필 포함 총 네 개의 프로필 생성이 가능합니다. 이러한 왓챠 서비스의 특성 상, 유저는 계정과 프로필 중 어떤 것으로 정의해야 할지에 대한 고민이 추가적으로 필요합니다. 집계 가능한 옵션이 총 세 가지가 있었는데, 첫째는 계정 기준, 둘째는 키즈 프로필을 제외한 프로필 기준, 셋째는 키즈 프로필도 포함한 프로필 기준입니다. 결론부터 말씀드리면 키즈 프로필도 포함한 프로필 단위로 집계하고 있는데, 이유는 크게 두 가지입니다. 첫째로, 왓챠 프리미엄 요금제는 최대 4개까지의 멀티 프로필이 가능하기에 프로필이 유저의 정의와 더 가까웠습니다. 둘째로, 키즈 프로필은 실질 이용자가 아이의 보호자라고 할지라도, 해당 아이의 취향이 반영된 별개의 사용자로 정의하는게 타당하다 판단했습니다. 다만 계정 기준으로 집계한 AU도 상황에 따라 유용하게 사용될 수 있어서, 현재는 구독자 수랑 엮어서 별개의 지표로 관리되고 있습니다.

3. 활동성의 기준

유저 정의는 끝났으니 활동성을 정의해야 합니다. 관련 논의가 오갔을 때 특정 액션을 한 유저, 일정 체류 시간 동안 머문 유저, 방문한 모든 유저 이렇게 총 세 가지 옵션을 두고 고민을 했습니다. 고민을 하면서 느낀건, ‘오래 머물지 않고 특정 액션이 없었어도 유의미한 활동을 한 유저가 있다’입니다. 예를 들어 접속 후 짧은 시간 동안 신작만 확인하고 나간 유저가 있다면, 특별한 액션도 없었고 체류 시간도 짧았지만, 콘텐츠 선호 여부를 떠나서 탐색을 했기에 의미 있는 활동을 했다고 볼 수 있습니다. 그리고 AU는 개발, 서비스, 비즈니스 등 다양한 분야의 방향을 제시할 수 있는 지표로서 가치를 가지고 있기에, 모든 분야에서 통용될 수 있는 큰 범위로 기준을 방문한 모든 유저로 정하게 됐습니다.

4. 플랫폼 별 유니크 vs 전체 유니크

유저와 활동성의 정의가 모두 끝났지만, 마지막 집계 과정에서 집고 넘어가야 할 점이 있습니다. 플랫폼 별로 AU를 구해 합하는 경우가 있고, 플랫폼 상관없이 유니크 유저를 집계하는 경우가 있는데, 후자를 선택해서 쓰고 있습니다. 가장 큰 이유는 상당히 많은 수의 유저들이 2개 이상의 디바이스를 통해서 재생을 하고 있는데, 이러한 상황에서 플랫폼 별로 집계하면 유저들이 중복 집계될 가능성이 매우 높아 유저 수를 트랙킹하는데 어려움이 발생하기 때문입니다.

이러한 과정 끝에 왓챠 내에서 사용하는 AU의 정의는 구독 여부 상관없이 왓챠를 로그인한 채로 플랫폼 관계 없이 방문한 유니크 프로필 이고, 현재도 사내 대시보드에서 유용하게 사용되고 있습니다.

핵심지표 개발: 신규 무료전환율

왓챠는 유료 서비스이지만, 신규 유저에게는 2주 무료 이용권을 제공합니다. 구독형 서비스의 특성 상 신규 유입은 매우 중요한 요소 중에 하나이기에, 유저들이 간편하고 빠르게 2주 무료 체험을 할 수 있도록 온보딩 플로우를 제공합니다.

플랫폼마다 온보딩 플로우가 미세하게 다르지만, 안드로이드를 예시로 들자면, 위 사진의 화살표 방향대로 인트로 화면, 이용권 선택, 회원가입, 결제정보 입력, 별점 튜토리얼, 마지막으로 홈화면으로 이어지는 플로우를 거칩니다. 구독자 수를 늘리기 위해서는 온보딩 플로우의 효과를 파악하는 것이 필수적이기에, 신규 유입 유저들 중 무료 구독을 시작한 유저의 비율을 지표화하게 되었고, 해당 지표는 왓챠에서 신규 무료전환율로 불립니다.

신규 무료전환율 개발의 첫번째 스텝으로 신규 유입 유저를 집계해야 합니다. 해당 과정에서 DS팀은 GA 및 Firebase에서 제공해주는 값과 이벤트들을 활용했습니다. 우선, 서비스 진입은 비 로그인 상태에서 이루어지기 때문에 로그인 유무 상관없이 유저를 집계할 수단이 필요한데, 해당 부분은 user_pseudo_id를 이용했습니다. 그리고 서비스 첫 진입을 알려줄 이벤트가 필요한데, 해당 부분은 앱 설치 후 처음으로 실행했을 때 찍히는 first_open 이벤트와, 웹사이트를 처음 방문했을 때 찍히는 first_visit 이벤트를 이용했습니다. 그러면 first_open 혹은 first_visit가 찍힌 user_pseudo_id 갯수를 세면 될 것 같지만, 보다 정확한 데이터를 위해서는 전처리가 필요합니다. 들어가기 앞서, user_pseudo_id의 특징들을 이해할 필요가 있습니다.

  • 앱의 경우 -> 앱을 설치할 때마다 생기는 고유의 인스턴스 ID
  • 웹의 경우 -> 퍼스트파티 쿠키 기반의 ID

해당 특징들로 인해, 앱은 재설치 혹은 기기 변경에 따라 user_pseudo_id가 바뀌고, 웹은 기기는 물론이고 브라우저, 쿠키 삭제에 따라 바뀝니다. 바뀔 때마다 GA 및 Firebase는 신규 유저로 인식하고 first_open과 first_visit 이벤트를 수집하기 때문에, 실제 신규로 유입된 유저 수보다 훨씬 부풀려지는 문제가 발생합니다. 해당 문제를 최소화하기 위해, DS팀에서 사용한 방법은 크게 두가지입니다.

첫째로, 웹뷰 데이터들은 모두 제거했습니다. 앱을 사용하던 유저가 웹뷰 화면에 진입하면, 그 순간 user_pseudo_id가 새로 생성되고 그와 함께 first_visit 이벤트도 함께 찍히기 때문입니다.

둘째로, 이벤트가 수집된 후 로그인을 하면, 그때부터 왓챠에서 지정한 user_id가 찍히기 시작합니다. 해당 user_id로 서버 db와 대조했을 때 기존 유저로 판별되면 집계에서 제거했습니다.

해당 과정이 끝난 후, 신규 유입 유저가 과도하게 잡히던 문제는 상당 부분 해결되었습니다. 아래 막대 그래프에서 전처리 전후의 신규 유입 유저 집계를 비교했는데, 무려 4배 만큼의 중복 집계를 제거해주는 효과가 있었습니다.

신규 유입 유저 집계는 이렇게 완성이 되었고, 다음 스텝으로 무료 구독 성공 유저를 집계해야 합니다. 해당 과정은 비교적 간단하게 진행되었습니다. 앞서 말씀드린 대로, 신규 유입 유저가 회원가입 및 로그인을 완료한 순간부터 왓챠에서 지정한 user_id가 들어옵니다. 해당 user_id로 서버 db에 있는 구독 데이터와 대조해서, 무료 구독을 시작한 유저로 판별되면 집계하도록 설정했습니다. 이렇게 신규 무료전환율의 지표화가 모두 완료됐습니다.

마치며

지금까지 핵심지표란 무엇일까에 대한 설명과, 왓챠의 핵심지표들 중 AU와 신규 무료전환율 개발 과정에 대해 간단하게 정리해 보았습니다.

개발 작업을 진행하면서 우여곡절도 많았지만, 프로덕트와 GA 데이터 구조의 이해도를 높일 수 있었고, 기존보다 개선된 사내 대시보드를 볼 수 있어서 매우 보람찬 시간이였습니다. 이런저런 데이터들을 봐가면서 뜻하지 않게 새로운 인사이트들도 얻을 수 있었는데, 이것이 왓챠 DS팀의 매력이라고 생각합니다.

AU와 신규 무료전환율은 왓챠 내에 있는 핵심지표들 중 극히 일부에 불과하고, 지금도 수많은 핵심지표들이 추가 및 수정되고 있습니다. 추후에 더 흥미로운 핵심지표들과 함께 다시 찾아오겠습니다.

참고 자료

WATCHA

왓챠는 모두의 다름이 인정받고 개인의 취향이 존중받는, 더 다양한 세상을 만듭니다.

WATCHA

왓챠는 모두의 다름이 인정받고 개인의 취향이 존중받는, 더 다양한 세상을 만듭니다.

clay

Written by

clay

Data Analyst

WATCHA

왓챠는 모두의 다름이 인정받고 개인의 취향이 존중받는, 더 다양한 세상을 만듭니다.