챕터별 상세
과거 데이터 파이프라인의 한계와 문제점
과거에는 분석가가 요구사항을 전달하면 엔지니어가 코드를 작성하고 검증하는 과정을 거쳐 모델 하나 추가에 평균 27일이 소요됐다. Airflow DAG가 논리 레벨로 묶여 있어 특정 모델 실패 시 의존 관계가 있는 하위 모델들을 수동으로 복구해야 하는 운영 부담이 컸다. 데이터 허브와 변환 작업이 분리되어 있어 계보 정보를 실무 작업에 즉각 활용하기 어려운 구조였다.
Flow.er: DBT와 Airflow의 결합을 통한 혁신
Mage.ai, Astronomer 등 다양한 오픈소스를 검토한 끝에 DBT와 Airflow를 결합한 자체 서비스 'Flow.er'를 개발했다. DBT의 핵심 요소인 데이터 계보(Lineage)를 Airflow의 Dynamic DAG 개념에 결합하는 아이디어를 적용했다. 이를 통해 분석가가 개발자 개입 없이 직접 모델을 작성하고 배포할 수 있는 환경을 마련하여 작업 기간을 3일 수준으로 단축했다.
Flow.er의 핵심 구성 요소와 DBT의 역할
DBT는 모델 작성 및 계보 자동 생성의 핵심 역할을 수행하며 SQL과 PySpark 모델을 모두 지원한다. YAML 파일을 통해 모델 정보와 테스트 코드를 관리함으로써 데이터 민주화를 달성했다. 특히 DBT의 싱귤러 테스트와 제네릭 테스트를 활용해 데이터 적재 전후의 품질 검증을 자동화했다. 파티션 단위 의존성 관리를 위해 커스텀 매크로를 도입하여 병렬 수행 능력을 강화했다.
Airflow를 활용한 동적 DAG 관리와 운영
DBT에서 생성된 의존성 그래프 파일을 파싱하여 Airflow에서 동적으로 DAG를 생성하는 구조를 택했다. 전체 계보를 관리하는 Manager DAG와 개별 모델을 처리하는 Model DAG로 역할을 분리했다. Manager DAG는 의존 관계에 따라 하위 모델들을 순차적으로 트리거하며, 실패 시 클릭 한 번으로 전체 계보 복구가 가능하다. VS Code 기반의 개인 인스턴스를 제공하여 분석가가 자유롭게 테스트할 수 있는 환경을 지원했다.
Playground: 분석가를 위한 셀프 서비스 모델링 환경
Git이나 DBT 사용법을 모르는 분석가도 SQL만으로 모델을 생성할 수 있는 'Playground' 기능을 추가했다. 웹 UI에서 SQL 쿼리를 입력하면 내부적으로 DBT 레포지토리에 반영되고 Airflow DAG가 자동 생성된다. CSV나 TSV 파일을 업로드하여 소스 모델로 즉시 활용할 수 있는 기능도 포함했다. 모델별로 자유로운 스케줄 설정과 과거 데이터 재적재(Backfill) 요청이 가능하도록 설계했다.
yaml
models:
- name: table_name
description: "example description"
config:
schedule-cron: "0 9 1 * *"
start-date: "2025-07-01T08:00:00+09:00"
backfill:
schedule-cron: "0 9 1 * *"
start-date: "2024-01-01T08:00:00+09:00"
end-date: "2025-04-14T23:59:59+09:00"DBT 모델의 스케줄 정보와 Backfill 범위를 정의하는 YAML 설정 예시
Tower: 멀티 도메인 통합 관제 및 확장 전략
여러 조직에서 Flow.er를 사용할 수 있도록 통합 관제 서비스인 'Tower'를 구축했다. Tower는 각 도메인별 Flow.er 컴포넌트의 상태를 모니터링하는 Health Dashboard를 제공한다. 도메인별로 필요한 DAG를 선택적으로 배포할 수 있도록 .airflowignore 파일을 동적으로 관리하는 시스템을 도입했다. 이를 통해 중앙에서 여러 조직의 데이터 파이프라인을 효율적으로 거버넌스할 수 있게 됐다.
정합성 향상을 위한 Partition Checker와 미래
다양한 파티션 형식을 가진 테이블의 정합성을 검증하기 위해 SQLGlot 라이브러리를 도입했다. 복잡한 SQL 쿼리를 파싱하여 실제 참조하는 소스 파티션 조건을 정확히 추출하고 적재 여부를 사전에 체크한다. 향후에는 MCP(Model Context Protocol) 서버를 운영하여 LLM이 데이터 계보를 분석하고 자연어로 명령을 수행하는 기능을 준비 중이다. 데이터 품질 메트릭을 수집하여 시각화하는 Data Observability 확보도 주요 목표이다.
python
from sqlglot import parse_one, exp
sql = "SELECT * FROM source_table WHERE dt = '2023-09-01'"
expression = parse_one(sql)
for table in expression.find_all(exp.Table):
print(f"Table: {table.name}")
// ...(중략)
// SQLGlot을 활용하여 쿼리 내 테이블 및 파티션 조건 추출 로직 수행SQLGlot 라이브러리를 활용하여 SQL 쿼리에서 소스 테이블과 파티션 정보를 추출하는 개념 코드
용어 해설
- 데이터 계보(Data Lineage)
- — 데이터의 생성부터 변형, 이동 과정을 시각화하고 추적하는 기술이다. 데이터 파이프라인 내에서 특정 테이블이 어떤 소스에서 왔는지 파악하여 장애 대응과 품질 관리를 용이하게 한다.
- 동적 DAG(Dynamic DAG)
- — Airflow에서 코드를 통해 런타임에 워크플로(DAG)를 생성하는 방식이다. 수백 개의 모델 의존성을 수동으로 정의하지 않고 설정 파일이나 메타데이터를 기반으로 자동 구성할 수 있다.
- 과거 데이터 재적재(Backfill)
- — 새로운 로직이 적용되었거나 데이터 유실이 발생했을 때 과거 특정 시점의 데이터를 다시 처리하여 적재하는 작업이다. 데이터 파이프라인 운영에서 가장 빈번하고 비용이 많이 드는 작업 중 하나이다.
- 모델 컨텍스트 프로토콜(MCP)
- — AI 모델이 외부 도구나 데이터 소스와 상호작용할 수 있도록 표준화된 인터페이스를 제공하는 프로토콜이다. LLM이 데이터 파이프라인의 메타데이터를 이해하고 분석하는 데 활용된다.
언급된 리소스
AI 분석 전체 내용 보기
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
원문 발행 2025. 11. 24.수집 2026. 02. 21.출처 타입 YOUTUBE
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.