DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 당근
  • Related reads#dbt
#Backend

Standardizing User Activation: How We Built a Shared Data Layer at Karrot

Standardizing User Activation: How We Built a Shared Data Layer at Karrot
01

Summary

"MAU가 왜 올랐을까?" 당근이 사용자 활성화를 분석하는 똑똑한 방법

파편화된 분석을 넘어 dbt와 공통 데이터 레이어로 구축한 표준 사용자 활성화 프레임워크 구축기

당근 데이터 팀이 단순한 활성 사용자 수 지표의 한계를 극복하고, 사용자의 상태(신규, 유지, 복귀)와 전이 과정을 정교하게 추적하기 위해 구축한 공통 데이터 레이어(Activation Layer)를 소개합니다. 대규모 데이터 환경에서 비용 효율성과 분석 생산성을 동시에 잡기 위해 dbt 모델 구조를 어떻게 설계했는지에 대한 실무적인 통찰을 제공합니다.

  • 01단순 활성 여부를 넘어 사용자의 상태 전이(State Transition)를 분석하는 프레임워크 도입
  • 02전체 히스토리 스캔 대신 일일 스냅샷 방식을 채택하여 데이터 처리 비용 및 시간 대폭 절감
  • 03dbt 매크로를 활용해 복잡한 SQL 로직을 캡슐화하고 모델 생성 생산성 극대화
  • 04FirstLast, Activation, Activation Status로 이어지는 체계적인 3단계 데이터 파이프라인 설계
  • 05지표 변동의 원인을 '신규 유입'인지 '이탈자의 복귀'인지 명확하게 구분할 수 있는 분석 기반 마련

+RECOMMENDATION

데이터 분석의 일관성이 부족하거나 대규모 데이터셋에서 사용자 코호트 분석 비용이 부담되는 데이터 엔지니어 및 분석가에게 이 아티클의 스냅샷 기반 모델링 기법을 강력히 추천합니다.

The Problem

당근(Karrot)에서는 기존에 사용자 활성화를 분석할 때 팀별로 각기 다른 임시 쿼리를 사용함에 따라 데이터의 신뢰성이 낮고 유지보수가 어려웠으며, 단순 DAU/MAU 지표만으로는 지표 변동의 원인을 파악하기 힘들었습니다.

The Solution

dbt를 활용하여 공통 데이터 계층인 Activation Layer를 구축하고, 일일 스냅샷을 저장하는 FirstLast 모델, 상태를 계산하는 Activation 모델, 상태 전이를 추적하는 Activation Status 모델의 3단계 구조와 dbt 매크로를 도입하였습니다.

The Result

데이터 스캔 범위를 하루 단위로 고정하여 쿼리 비용을 최적화하고 백필 생산성을 높였으며, SQL 작성 없이 매크로 설정만으로 새로운 액션에 대한 표준화된 활성화 모델을 즉시 생성할 수 있는 환경을 구축했습니다.

Trade-off

일일 스냅샷 방식은 데이터가 누적될수록 저장 비용이 증가하며, 특정 시점의 데이터 오류가 이후 날짜의 상태 값에 연쇄적으로 영향을 미칠 수 있는 계단식 오류 위험이 존재하여 철저한 품질 모니터링이 병행되어야 합니다.

03

Key Concepts

Concept · 01

User Activation Framework

사용자를 단순히 활성/비활성으로 구분하지 않고, 신규(New), 유지(Retained), 복귀(Reactivated) 등의 세부 상태와 그 사이의 변화를 추적하는 분석 체계입니다.

  • 지표 변동의 근본 원인인 '사용자 경로' 파악 가능
  • 상태 전이(State Transition)를 통해 이탈 패턴 분석 지원
Concept · 02

dbt Macros

dbt에서 반복되는 복잡한 SQL 로직을 재사용 가능한 함수 형태로 정의하여 관리하는 기능입니다.

  • Window Function, Join 등 복잡한 활성화 계산 로직을 캡슐화
  • 모델명과 참조 Fact 테이블 지정만으로 표준화된 결과물 생성
Concept · 03

FirstLast Model (Snapshot)

각 사용자의 최초 및 최근 액션 시점을 일별 스냅샷 형태로 저장하는 중간 데이터 모델입니다.

  • 당일 활성 유저만 업데이트하여 전체 데이터 스캔 범위 최소화
  • 증분 업데이트 및 백필 시 비용 효율적인 구조 제공
Concept · 04

Transition Segments

이전 시점의 상태와 현재 시점의 상태를 결합하여 사용자의 이동 경로를 세분화한 개념입니다.

  • 예: '신규 → 유지(New User Retained)', '복귀 → 이탈(Reactivation Failed)' 등
  • 사용자 획득-유지-이탈-복귀의 전체 흐름을 정교하게 분석
Continue reading · same source

당근More from 당근

View all posts from 당근
  • 혼자 시작해 전국 오픈까지, 당근 레슨/과외 빌딩 로그

    MarketplaceProduct Market FitFunnel Optimization
    2주 전
  • 디자인시스템 팀은 디자인시스템만 잘 만들면 될까

    Design SystemAI in DesignUX Patterns
    1개월 전
  • 당근 200+개 DB 를 옮기는 ELT 플랫폼, DT Platform 을 만든 이야기

    ELTApache SparkApache Airflow
    1개월 전
  • 누구나 찾아볼 수 있는 중고거래 서버 LLM 릴리즈 노트 도입기

    LLMGitHub ActionsNotion
    2개월 전
  • How We Protect Karrot’s Internal PyPI Proxy from Supply Chain Attacks

    PyPIAWS CodeArtifactSecurity Cooldown
    2개월 전

Related reads#dbt

Explore #dbt
당근

Activation을 전사 공통 레이어로 만들며 해결한 3가지: 신뢰성, 비용, 생산성

#dbt6개월 전

Source

당근
당근
Engineering Blog

Published · January 2, 2026

Topics

dbt데이터 모델링사용자 활성화데이터 파이프라인분석 엔지니어링표준화BigQuery