7 minute read

데이터 분석의 필요성 (혹은 유저 데이터 분석 필요성)

우리에게 데이터 분석이라 하면 흔히 Python을 활용한 수리적 분석이나 복잡한 통계 모델을 떠올리기 쉽습니다. 하지만 개발자 역시 유저 친화적인 분석 도구를 활용해 프로덕트 성장에 직접적으로 기여할 수 있습니다. 그중에서도 믹스패널(Mixpanel) 은 유저의 행동 데이터를 직관적으로 파악하고 인사이트를 도출하는 데 최적화된 도구입니다.

이번 포스팅에서는 믹스패널의 핵심 기능과 더불어 개발자인 제가 어떤 흐름으로 데이터를 추적하고 분석에 활용하고 있는지 공유해보고자 합니다.

왜 믹스패널(Mixpanel)인가?

믹스패널이란?

믹스패널은 유저가 서비스 내에서 ‘무엇을’, ‘언제’, ‘어떻게’ 하는지를 쉽게 추적해주는 제품 분석(Product Analytics) 도구입니다. 단순히 방문자 수를 집계하는 것을 넘어 특정 사용자 그룹(코호트)의 행동 패턴이나 서비스 내 이탈 지점(퍼널)을 상세히 분석할 수 있도록 도와줍니다.

저는 믹스패널을 활용해 프로덕트 개선 과정을 아래와 같이 정리하여 사용하고 있습니다.

  1. 실시간 데이터 수집: 유저의 모든 유의미한 인터랙션을 기록합니다.
  2. 패턴 파악: 주요 이벤트 간의 상관 관계와 유저의 흐름을 파악합니다.
  3. 가설 수립: 데이터를 근거로 현재 서비스의 문제점을 정의하거나 개선점을 도출합니다.
  4. 액션 설정: 분석 결과에 따라 다음 개발 우선순위와 기능을 결정합니다.

이러한 과정은 막연한 추측이 아닌 데이터라는 수치적인 근거를 바탕으로 문제 해결의 성공률을 높여줍니다.

개발자를 위한 믹스패널 구현 흐름

우선, 데이터를 수집할 수 있도록 프로젝트 내 환경을 만들어줘야 합니다. 저는 유연한 관리를 위해 AnalyticsService라는 공통 레이어를 만들어 활용했습니다.

이벤트 트래킹 구조 설계

기본적인 흐름은 초기화 → 사용자 식별 → 이벤트 트래킹 순으로 진행됩니다. 특히 멀티 플랫폼에 동일한 이벤트를 보내야할 때, 이를 추상화하여 관리하면 유지보수가 훨씬 수월해집니다.

// 예시 코드
class MixpanelExample {
  constructor() {
    this.init();
  }

	// 1. 프로덕션 환경에서만 믹스패널 초기화
  init = async () => {
    if (!isProduction()) {
      return;
    }

    try {
	    // 페이지 뷰 자동 추적 옵션과 함께 초기화
      mixpanel.init('YOUR_PROJECT_TOKEN', { track_pageview: true });
			// ...
    } catch (error) {
      // pass
    }
  };

	// 2. 통합 트래킹 함수
  track: TrackFunctionType = (...args) => {
    if (!isProduction()) {
      return;
    }

		// Firebase와 Mixpanel 등에 동시에 이벤트를 전송
    analytics.logEvent(name.slice(0, 40), properties);
    mixpanel.track(name, properties);

  };

이와 같이 초기 세팅을 마무리하면 실제 기능을 동작시킬 코드에서는 아래와 같이 선언적으로 이벤트를 기록할 수 있습니다. 비즈니스 로직 직전에 유저의 행동을 캡쳐하는 흐름입니다.

const handleTest = async () => {
  // 믹스패널에 유저 행동 기록
  AnalyticsService.track("TestActions", {
    type: "test-click",
  });

  // 이후 실제 서비스 로직 실행
  await createPost();
};

요약하면, “테스트” 버튼 에서는 TestActions 이벤트로 타입 등을 함께 믹스패널에 기록하고, 그 직후 실제 생성 API를 호출하는 구조라고 할 수 있습니다.

믹스패널의 핵심 기능 살펴보기

데이터를 성공적으로 쌓기 시작했다면 이제 믹스패널이 제공하는 강력한 분석 도구들을 활용할 수 있습니다. 믹스패널의 기능은 크게 세 가지로 나뉩니다.

  • 이벤트 기반 분석 (Event-based Analysis): 유저의 클릭, 구매, 페이지 조회 등 모든 상호작용을 이벤트 단위로 추적합니다. 단순히 페이지 뷰만 보는 것이 아니라 유저가 서비스 내에서 움직이는 상세한 흐름을 파악할 수 있습니다.
  • 퍼널 및 전환 분석 (Funnel & Conversion): 유저가 최종 목표(ex. 회원가입, 결제 완료)에 도달하기까지의 과정을 단계별로 분석합니다. 어느 지점에서 유저들이 가장 많이 이탈하는지 찾아내고 이를 개선하는 데 핵심적인 역할을 합니다.
  • 세그먼트 및 코호트 분석 (Segmentation & Cohort): 특정 행동을 하거나 특정 속성을 가진 유저들을 그룹(코호트)으로 정의합니다. 이 그룹들이 시간이 지남에 따라 어떻게 행동이 변하는지, 우리 서비스의 가치를 지속적으로 경험하고 있는지 추적합니다.

믹스패널은 이러한 기능들을 조합해 문제 해결의 성공 확률을 높여줍니다. 저는 그중에서도 제가 가장 유용하게 활용하고 있는 인사이트(Insights)리텐션(Retention) 을 중점적으로 다루고자 합니다.

image.png

인사이트(Insights): 숫자에 의미 부여하기

인사이트 보드는 데이터의 추세를 시각화할 수 있습니다. 공식 문서에서는 아래와 같이 설명하고 있습니다.

💡 Insights는 데이터 내의 추세와 구성을 시각화하도록 설계된 강력하고 유연한 도구입니다. 이벤트, 코호트 및 사용자 프로필을 분석하고 다양한 차트 유형으로 데이터를 표시할 수 있습니다.
고급 인사이트 기능을 사용하면 수식을 만들고, 현재 데이터를 과거 데이터와 비교하고, 더 심층적인 분석을 위해 사용자 지정 이벤트 및 속성을 생성할 수 있습니다.

저는 주로 아래와 같은 질문에 답을 얻기 위해 이 기능을 사용합니다.

  • WAU(주간 활성 사용자 수): 서비스 사용자가 시간에 따라 늘고 있는가?
  • 사용 빈도: 유저가 이 기능을 얼마나 자주 반복해서 사용하는가? (unique vs total 설정 기반)
  • 유저 속성: 어떤 기기나 지역에서 접속한 유저가 가장 활발한가?

인사이트 보드 만들기

사용법은 생각보다 간단합니다. 왼쪽 상단에서 인사이트를 더하면 아래 사진과 같은 화면을 볼 수 있습니다.

image.png

기본적인 구조로는 크게 빨간색과 주황색 영역처럼 두가지로 나눌 수 있습니다

  • 빨간색: 설정한 이벤트와 관련한 표가 나타나는 영역입니다. 보드 내에 뜨는 기간을 지정할 수 있습니다
  • 주황색: 실제 보드에 반영하고 싶은 이벤트를 설정하는 영역입니다. 특정 이벤트 별 필터링 혹은 조건을 걸 수도 있으며, 비율 계산과 같은 메트릭을 추가할 수도 있습니다

예를 들어, 아래의 사진에서는 다음과 같이 정의할 수 있습니다

  • 보라색: 이벤트 A
  • 주황색: 이벤트 B
  • 민트색: A를 한 유저중 B도 한 비율

실제로 메트릭에선 A, B를 별도로 이벤트를 추가하여 실제 기능을 사용한 유저의 수 혹은 전체 이벤트 수를 확인할 수 있습니다.

이때, 특정 이벤트를 한 유저의 비율을 구하고 싶으면 민트색처럼 메트릭을 사용할 수 있습니다. 예를 들어, (B/A)*100은 실제로 A 한 사람 중 B도 한 비율을 의미하므로 보통 전환율(CVR), 클릭률(CTR) 을 구할 때 사용할 수 있습니다.

image.png

이처럼 메트릭을 설정하면, 빨간색 영역에 차트와 동시에 날짜별로 구하고자 하는 값을 확인할 수 있습니다. 믹스패널은 날짜별 평균치도 함께 제공해주어 특정 기간별로 사용성을 측정할 때도 유용합니다.

리텐션(Retention)과 코호트(Cohort)

서비스의 지속 가능성을 판단하는 가장 중요한 지표는 단연코 리텐션(재방문율) 입니다. 유저가 우리 서비스를 한 번 쓰고 떠나는지, 아니면 꾸준히 다시 찾아오는지 확인해야 합니다.

코호트의 중요성

리텐션을 분석할 때 반드시 함께 봐야 하는 개념이 코호트입니다. 코호트는 특정 기간에 가입했거나 특정 행동을 한 유저 그룹을 의미합니다.

서비스가 급성장하여 신규 유입이 폭증하면, 기존 유저들이 대거 이탈하더라도 전체 리텐션 숫자는 높게 유지되는 착시 현상이 발생할 수 있습니다. 이때 코호트별로 데이터를 쪼개보면 “한 달 전 가입한 유저들이 여전히 잘 남고 있는지” 를 정확히 진단할 수 있습니다.

리텐션 지표 해석

  • 후행 지표 (D30): 한 달 뒤의 생존율은 서비스의 근본적인 지속력을 보여줍니다.
  • 선행 지표 (D1, D3, D7): D30같은 후행 지표를 얻기 전에 사용할 수 있습니다. 개발자로서는 수정 사항이 즉각 반영되는 짧은 주기의 리텐션을 참고하여 프로덕트의 방향성을 빠르게 조정할 수 있습니다.

인사이트 보드 만들기

image.png

마찬가지로 앞서 설명드린 인사이트 보드와 유사한 구조입니다. 달라지는 점이 있다면 주황색 영역인데, 어떤 이벤트를 기준으로 다시 사용하는지를 정할 수 있습니다.

예를 들어, ‘게시물을 작성하는 사람이 또다시 게시물을 작성하는 비율’을 보고싶으면 아래와 같이 설정할 수 있습니다. 이때 게시물 작성시 측정되는 이벤트를 createPost라 가정하겠습니다.

  • 첫번째 이벤트 선택: createPost
  • 두번째 이벤트 선택: createPost

이와같이 설정하면 우리의 서비스에서 게시물을 작성하고 또다시 게시물을 작성하는 유저들의 비율을 아래 사진처럼 확인할 수 있습니다. 믹스패널에서 리텐션은 D30까지 지원이 됩니다.

image.png

개발자가 데이터를 보면 무엇이 달라질까?

데이터를 본다는 것은 단순히 숫자를 확인하는 것 그 이상의 의미가 있습니다. 이는 마치 개발의 영역을 ‘구현(How)’에서 ‘해결(Why)’로 확장하는 과정과 같다고 느꼈습니다.

프로덕트의 방향성

  • 가치 중심의 개발(Value-driven): 단순히 요구사항을 쳐내는 ‘피처 팩토리(Feature Factory)’에서 벗어나, 유저에게 진짜 가치를 주는 기능에 집중하게 됩니다.
  • 리소스 최적화: 모든 기능을 완벽하게 만들기보다, 데이터상 유저가 가장 많이 사용하는 핵심 기능에 코드 퀄리티와 성능 최적화 역량을 집중할 수 있습니다.
  • 정교한 로깅과 시스템 설계: 직접 분석을 해보면 “이 시점에 이런 로그가 있었다면 원인 파악이 쉬웠을 텐데”라는 깨달음을 얻을 수 있습니다. 이는 더 정교한 이벤트 설계와 로깅 시스템 구축으로 이어집니다.
  • 우선순위 조율: 기술적인 리소스가 많이 드는 작업에 대해서 “현재 유저의 1%만 사용하는 경로이므로 현재는 간단히 구현합시다”와 같은 데이터 기반 제안이 가능해집니다.

나의 경험: 유저 리텐션 상승으로

믹스패널을 활용하며 가장 인상 깊었던 순간은 제가 코드로 구현한 UI/UX 개선이 실제 리텐션 수치의 변동으로 증명될 때였습니다. 제품의 가시적인 성장을 이끌어냈던 두 가지 사례를 공유합니다.

사례 1. 홈 화면 반응형 그리드 도입과 탐색 효율 개선

Context (배경): 제가 맡은 서비스의 D1 리텐션은 특정 수준에 정체되어 있었습니다. 당시 홈 화면은 모바일 규격에 고정된 1열 리스트 형태였고, 이는 데스크톱 환경의 유저분들에게도 한 화면에 2~3명의 캐릭터만 노출하는 비효율적인 탐색 경험을 제공하고 있었습니다.
Hypothesis (가설): “사용자에게 한 번에 노출되는 캐릭터 수를 물리적으로 늘려주는 반응형 레이아웃을 도입하면 탐색 비용이 줄어 첫 대화 시도가 늘어날 것이고 이것이 곧 리텐션 상승으로 이어질 것이다.”
Action (실행): 화면 크기에 따라 열의 개수가 최적화되는 반응형 그리드 레이아웃을 배포했습니다.
Result (결과): 업데이트 바로 다음 날, D1 리텐션이 평소 대비 약 14% 이상 급증했습니다. 비록 직후 일시적인 수치 변동이 있었으나, 이는 데이터 로깅의 노이즈나 외부 요인을 점검하며 데이터 신뢰도를 높이는 계기가 되었습니다. 결과적으로 레이아웃 개편이 유저의 첫인상을 개선하고 서비스 진입 장벽을 낮추는 데 유효했음을 증명했습니다.

사례 2. 데스크톱 반응형 도입과 멀티태스킹 최적화

  • Context (배경): 리텐션이 다시 회복세를 보이기 시작했으나, 데스크톱 유저들은 여전히 핵심 기능을 사용할 때마다 현재 대화 맥락을 끊어야 하는 ‘모바일 동선’에 갇혀 있었습니다. 넓은 화면을 제대로 활용하지 못하는 구조적 한계가 있었습니다.
  • Hypothesis (가설): “채팅방 내부에 주요 기능을 즉시 조회할 수 있는 사이드 패널을 도입하면, 대화와 정보 확인을 동시에 수행하는 ‘멀티태스킹’이 가능해져 유저의 몰입감과 서비스 체류 시간이 늘어날 것이다.”
  • Action (실행): 데스크톱 환경의 이점을 극대화하기 위해 사이드 패널을 적용했습니다. 특히 유저들이 많이 찾는 기능을 우측 사이드바에 상시 노출하고, 이벤트 수동 정렬 및 온/오프 커스터마이즈 기능을 추가했습니다.
  • Result (결과): 업데이트 직후, 리텐션의 저점 수치가 한 단계 오른 유의미한 변화가 나타났습니다. 배포 후 가장 낮은 수치를 기록한 날조차 이전 주간의 평균치를 상회했으며, 특히 배포 당일에는 해당 기간 중 최고치를 경신했습니다.

💡 개발자가 데이터를 보며 배운 점

이번 과정을 통해 저는 두 가지 중요한 교훈을 얻었습니다.

  1. 데이터의 변동성에 일희일비하지 않기: 특정 날짜에 급격한 하락처럼 데이터는 때로 요동칩니다. 하지만 명확한 ‘배포 시점’을 기준으로 전후 흐름을 파악하니, 일시적인 하락보다는 전반적인 수치가 5% 이상 계단식으로 상승하는 성과를 볼 수 있었습니다.
  2. 선행 지표의 힘: 리텐션은 결과가 나오기까지 시간이 걸리는 후행 지표입니다. 하지만 믹스패널에서 실시간으로 찍히는 주요한 기능의 선행 지표를 모니터링하며, 배포 당일 저녁에 이미 “이 업데이트는 성공적이다”라는 확신을 얻을 수 있었습니다.

결국 개발자가 데이터를 본다는 것은, 자신이 짠 코드의 가치를 숫자로 치환하여 확인하는 과정이었습니다. 유저의 목소리를 데이터라는 언어로 해석할 수 있을 때, 비로소 ‘기능 구현’을 넘어 ‘성장’을 고민하는 개발자가 될 수 있음을 느꼈습니다.