당근 데이터 지도를 그리다: 컬럼 레벨 리니지 구축기
백엔드
당근 데이터 지도를 그리다: 컬럼 레벨 리니지 구축기
두줄요약
BigQuery 쿼리 로그를 SQL 파싱해 컬럼 레벨 리니지를 구축한 사례를 소개했습니다. 테이블·컬럼 의존 관계를 빠르게 추적해 데이터 신뢰성과 운영 효율을 높였습니다.
문제 상황
- BigQuery 기반 데이터 파이프라인에서 테이블·컬럼 간 데이터 흐름과 의존 관계가 보이지 않는 상태
- 파이프라인 실패나 스키마 변경 시 영향 범위 파악에 많은 시간 소요
- 테이블 레벨 리니지만으로는 컬럼 단위 영향도와 PII 흐름 추적에 한계
원인 분석
- 조직별로 생성되는 SQL 쿼리와 파이프라인이 분산되어 중앙 관리가 어려운 구조
- BigQuery 기본 정보만으로는 컬럼 레벨 리니지와 View 기반 흐름 파악이 충분하지 않음
- OpenLineage 방식은 다양한 실행 환경에 계측 도입 부담이 큼
해결 방법
- BigQuery
INFORMATION_SCHEMA.JOBS의 쿼리 로그를 수집해 SQL 파싱으로 리니지 추출 sqlglot로 AST를 분석하고 Spark·Airflow로 대량 처리 및 주기적 업데이트- 원본 Raw 테이블과 목적별 View로 분리해 조회·운영 효율 개선
성능/운영 포인트
- 일 단위 자동 갱신으로 최신 쿼리 반영
- 하루 약 1만 5천개 테이블, 80만 개 컬럼 의존 관계 추적
- MCP Server로 몇 초 내 리니지 조회 지원
적용해볼 점
- SQL 중심 데이터 환경에서는 쿼리 로그 기반 리니지 추출 검토
- 원본 보존 후 목적별 View로 분리하는 데이터 모델링 적용
- 완성형보다 점진적으로 커버리지를 넓히는 운영 방식 채택