Modern data stack 의 transformation layer
dbt (data build tool, 2026.8 기준 dbt-core 1.12) 는 modern data team 이 ELT 의 transformation 절반을 쓰는 방식이야. SQL 을 돌리는 Python 을 orchestrator 가 돌리는 겹겹의 포장 대신, dbt 는 SQL transformation 그 자체를 맡는 전용 도구야: version-controlled 코드로, 테스트와 docs 와 lineage 와 배포 방법까지 갖춰서.
dbt 가 관리하는 것
- Model — dbt 가 테이블 또는 뷰로 materialize 하는 SQL
SELECT문. - Source — freshness 체크가 달린, 선언된 raw upstream 테이블.
- Test — model 출력에 대한 assertion (uniqueness, non-null, accepted value, custom).
- Docs — 자동 생성되는 lineage 그래프 + 문서 사이트.
- Snapshot — SCD Type 2 이력 테이블의 dbt 식 이름.
- Macro — Jinja 템플릿으로 재사용하는 SQL.
모두가 dbt 로 간 이유
dbt 전의 transformation layer 는 scheduler 가 돌리는 임시 SQL 이거나 orchestrator task 안에 파묻힌 SQL 이었어. 어느 쪽이든 SQL 자체는 일급 산출물이 아니었지 — 테스트 없고, docs 없고, version control 규율 없고. dbt 가 SQL 을 산출물로 만들었고, 그게 되는 순간 나머지 practice (review, test, lineage) 가 자연스럽게 따라왔어.