
파편화된 분석을 넘어 dbt와 공통 데이터 레이어로 구축한 표준 사용자 활성화 프레임워크 구축기
당근 데이터 팀이 단순한 활성 사용자 수 지표의 한계를 극복하고, 사용자의 상태(신규, 유지, 복귀)와 전이 과정을 정교하게 추적하기 위해 구축한 공통 데이터 레이어(Activation Layer)를 소개합니다. 대규모 데이터 환경에서 비용 효율성과 분석 생산성을 동시에 잡기 위해 dbt 모델 구조를 어떻게 설계했는지에 대한 실무적인 통찰을 제공합니다.
데이터 분석의 일관성이 부족하거나 대규모 데이터셋에서 사용자 코호트 분석 비용이 부담되는 데이터 엔지니어 및 분석가에게 이 아티클의 스냅샷 기반 모델링 기법을 강력히 추천합니다.
당근(Karrot)에서는 기존에 사용자 활성화를 분석할 때 팀별로 각기 다른 임시 쿼리를 사용함에 따라 데이터의 신뢰성이 낮고 유지보수가 어려웠으며, 단순 DAU/MAU 지표만으로는 지표 변동의 원인을 파악하기 힘들었습니다.
dbt를 활용하여 공통 데이터 계층인 Activation Layer를 구축하고, 일일 스냅샷을 저장하는 FirstLast 모델, 상태를 계산하는 Activation 모델, 상태 전이를 추적하는 Activation Status 모델의 3단계 구조와 dbt 매크로를 도입하였습니다.
데이터 스캔 범위를 하루 단위로 고정하여 쿼리 비용을 최적화하고 백필 생산성을 높였으며, SQL 작성 없이 매크로 설정만으로 새로운 액션에 대한 표준화된 활성화 모델을 즉시 생성할 수 있는 환경을 구축했습니다.
Trade-off
일일 스냅샷 방식은 데이터가 누적될수록 저장 비용이 증가하며, 특정 시점의 데이터 오류가 이후 날짜의 상태 값에 연쇄적으로 영향을 미칠 수 있는 계단식 오류 위험이 존재하여 철저한 품질 모니터링이 병행되어야 합니다.
사용자를 단순히 활성/비활성으로 구분하지 않고, 신규(New), 유지(Retained), 복귀(Reactivated) 등의 세부 상태와 그 사이의 변화를 추적하는 분석 체계입니다.
dbt에서 반복되는 복잡한 SQL 로직을 재사용 가능한 함수 형태로 정의하여 관리하는 기능입니다.
각 사용자의 최초 및 최근 액션 시점을 일별 스냅샷 형태로 저장하는 중간 데이터 모델입니다.
이전 시점의 상태와 현재 시점의 상태를 결합하여 사용자의 이동 경로를 세분화한 개념입니다.




