모든 임원이 결국 묻는 질문
"왜 이 숫자가 바뀌었어?" — 이 질문에 대한 답이 잘나가는 데이터 팀과 신뢰받는 데이터 팀을 가르는 선이야. 답하려면 lineage 가 필요해 — 모든 출력의 모든 column 이 upstream source 에서 어떻게 흘러왔는지 보여 주는 그래프. 테이블 수준 ("이 대시보드는 이 mart 를 읽어"), column 수준 ("대시보드의 revenue 는 fct_orders 의 amount_usd 에서 와"), 이상적으론 row 수준 ("이 row 의 값은 2026-04-30 03:14 UTC run 이 만들었어") 까지.
오늘 lineage 를 주는 것들
- dbt 의 docs 사이트 — 모든 model 의 lineage 그래프를 그려 줘. Model 을 클릭하면 뭐가 얘를 먹이고 뭐가 얘한테 기대는지 보여.
- Dagster — lineage 를 orchestration 그 자체로 모델링해. 모든 asset 의 upstream 과 downstream 이 일급으로 붙어 다녀.
- OpenLineage — 어떤 파이프라인 framework 에서든 lineage 이벤트를 내보내는, 자리를 잡아가는 open 표준. Airflow, Dagster, Spark, Flink 전부 통합이 있어.
- Marquez / DataHub / OpenMetadata — OpenLineage 로 내보낸 lineage 를 저장하고 그려 주는 오픈소스 platform.
도구가 아니라 규율
그래프는 도구가 줘. 그런데 그 그래프가 뜻을 가지려면 transformation 이 구조를 갖고 있어야 해 — 그게 규율이야. 모든 mart 가 staging layer 에 기대고 모든 staging layer 가 source 에 기대는 dbt 프로젝트는 깔끔한 lineage 를 낳아. 전부를 하나의 거대한 CTE 사슬에서 해치우는 dbt 프로젝트는 — 틀린 말은 없는데 아무 쓸모 없는 lineage 그래프를 낳아.