
데이터 신뢰성과 운영 비용, 개발 생산성을 모두 잡은 당근 데이터 가치화팀의 데이터 모델링 여정
당근은 사용자 지표 분석의 한계를 극복하기 위해 단순히 '얼마나 방문했나'를 넘어 '어떤 상태로 전이되었나'를 추적하는 전사 공통 레이어를 구축했습니다. dbt 매크로와 스냅샷 기반의 3단계 모델링을 통해 복잡한 쿼리 없이도 고차원적인 활성 유저 분석이 가능해졌으며, 이를 통해 서비스 성장 원인을 정교하게 파악하고 마케팅 성과를 극대화하는 성과를 거두었습니다.
서비스 성장의 핵심 동력을 단순 수치가 아닌 유저 흐름 관점에서 정교하게 파악하고 싶은 데이터 분석가와, 비효율적인 반복 쿼리 작업을 시스템적으로 표준화하려는 데이터 엔지니어에게 추천합니다.
기존에는 팀마다 활성 사용자(Active User) 지표를 각자 정의하고 쿼리로 직접 계산하면서 데이터의 신뢰성이 낮았고, 지표 산출을 위해 매번 전체 기간을 스캔해야 하는 막대한 연산 비용과 복잡한 SQL 작성에 따른 생산성 저하 문제가 있었습니다.
dbt를 활용해 'FirstLast(최초/직전 활동 스냅샷)', 'Activation(활성 상태)', 'Activation Status(전이 및 비활성 포함)'로 구성된 3단계 공통 데이터 레이어를 구축하고, 복잡한 로직을 dbt 매크로로 캡슐화하여 설정만으로 모델을 생성할 수 있게 했습니다.
데이터 스캔 범위를 하루치로 고정하여 비용을 절감하고 백필 성능을 개선했으며, 전사 공통의 '활성 상태' 및 '전이 세그먼트' 지표를 통해 서비스 성장의 원인을 정교하게 파악하고 CRM 마케팅 타겟팅에 활용하는 성과를 거두었습니다.
Trade-off
날짜별 스냅샷 방식으로 데이터를 누적함에 따라 저장 공간 사용량이 점진적으로 증가하며, 특정 시점의 데이터 오류가 이후 날짜의 결과값에 영향을 줄 수 있어 정교한 품질 모니터링과 파티션 단위의 재적재 운영이 필요합니다.
사용자의 활동을 단순 방문 여부가 아닌 신규, 유지, 복귀, 이탈 등의 활성 상태와 그 사이의 전이 과정으로 해석하는 분석 프레임워크입니다.
dbt에서 반복되는 SQL 로직을 함수처럼 캡슐화하여 재사용할 수 있게 만드는 기능입니다.
사용자가 직전 기간의 상태에서 현재 상태로 어떻게 변화했는지를 나타내는 세밀한 분석 지표입니다.
유저별 최초 활동일과 마지막 활동일을 날짜별로 기록하여 누적하는 중간 데이터 모델입니다.




