dbt 레이어 구조화와 SQL 가독성 원칙
dbt를 도입하면서 가장 먼저 한 일은 Staging → Intermediate → Mart 3레이어 구조를 확립하는 것이었습니다. Staging은 소스 원본만 최소 정제, Intermediate는 비즈니스 로직 조인, Mart는 최종 집계로 역할을 분리했습니다. SQL 가독성을 위해 CTE(Common Table Expression) 분리 원칙을 팀 컨벤션으로 정했고, 하나의 CTE가 단일 목적을 갖도록 네이밍을 명확히 했습니다.
dbt test로 Not Null·Unique·Accepted Values 테스트를 모델마다 작성해 데이터 품질을 파이프라인에 내장했습니다. 프로젝트 초반에 Intermediate를 건너뛰고 Staging에서 바로 Mart를 만들었다가, 로직이 복잡해질수록 SQL이 읽기 어려워지는 문제를 겪었습니다. 3레이어로 리팩토링 후 온보딩 속도가 빨라졌고, PR 리뷰 시간도 줄었습니다.
dbt는 SQL을 소프트웨어처럼 관리하는 도구라는 관점이 설계를 바꿨습니다.