본문 바로가기
대외활동/DateEngineering Zoom Camp

[DE-Zoomcamp] 5. Data Platforms : Bruin 기반 NYC Taxi ELT 파이프라인 구축

by 드인 2026. 2. 22.
이 글은 Data Engineering Zoomcamp의 Module 5: Data Platforms 를 바탕으로
Bruin CLI를 활용해 NYC Taxi 데이터를 ingestion → staging → reporting 단계로 구성한
End-to-End ELT 파이프라인을 정리한 글입니다.

 

 

목차

  1. Data Platform이란 무엇인가
  2. Bruin의 핵심 개념
  3. NYC Taxi ELT Pipeline 구조
  4. Materialization 전략 이해
  5. Data Quality & Lineage
  6. 참고자료/출처

 

1. Data Platform이란 무엇인가

데이터 플랫폼은 단순히 데이터를 저장하는 시스템이 아닌 데이터를 수집하고, 변환하고, 검증하고, 의존성을 관리하는 전체 워크플로를 운영하는 구조를 의미합니다.

 

Modern Data Stack에서는 다음 핵심 구성 요소가 있습니다.

  • 데이터 적재(Ingestion)
  • 데이터 변환(Transformation)
  • 실행 관리(Orchestration)
  • 데이터 품질(Data Quality)
  • 메타데이터 및 계보(Lineage)

Module 5에서는 이러한 개념을 하나의 CLI 도구인 Bruin으로 통합 실습합니다.



2. Bruin의 핵심 개념

Bruin은 “파이프라인 중심” 사고를 기반으로 설계된 CLI 도구입니다.

2-1. Asset

Asset은 데이터 가공의 최소 단위입니다.

  • SQL 파일
  • Python 파일
  • Seed(CSV)

각 파일은 하나의 독립 실행 단위가 됩니다.

2-2. Pipeline

Pipeline은 Asset들의 실행 순서를 정의합니다.

의존성을 자동으로 분석하여 DAG(Directed Acyclic Graph) 형태로 실행됩니다.

  • ingestion → staging → reporting

2-3. Environment & Connection

.bruin.yml에서 실행 환경을 정의합니다.

 
default_environment: default

environments:
default:
connections:
duckdb:
- name: duckdb-default
path: duckdb.db
 

3. NYC Taxi ELT Pipeline 구조

이번 실습에서는 NYC TLC 데이터를 기반으로 다음 구조를 구성했습니다.

ingestion.payment_lookup
ingestion.trips

staging.trips

reports.trips_report

3-1. Ingestion Layer

  • Python asset으로 parquet 파일 다운로드
  • payment_lookup은 seed asset으로 적재
  • 전략: append

대용량 데이터를 처리하기 때문에 기간을 지정하여 실행합니다.

 
bruin run ./pipeline/pipeline.yml \
--start-date 2022-01-01 \
--end-date 2022-02-01 \
--full-refresh
 

 

3-2. Staging Layer

  • 중복 제거
  • payment lookup join
  • Incremental 적용

 

3-3. Reporting Layer

  • 날짜 / taxi_type / payment_type 기준 집계
  • COUNT, SUM, AVG 계산

→ 최종 분석 테이블 생성 단계


4. Materialization 전략 이해

데이터 파이프라인에서 가장 중요한 설계 요소 중 하나는 어떤 Materialization 전략을 사용할 것인가입니다.

 

전략 설명
table 전체 재생성
append 기존 데이터 유지 + 추가
merge upsert
time_interval 특정 기간 삭제 후 재삽입

NYC Taxi 데이터는 pickup_datetime 기준 월 단위로 구성됩니다.

따라서 특정 월만 재처리할 수 있도록 time_interval 전략을 사용하는 것이 적절합니다.


5. Data Quality & Lineage

5-1. Data Quality

Column 단위 품질 검증을 설정합니다.

checks:
- name: not_null
 

pickup_datetime은 NULL이 허용되지 않도록 설정했습니다.

 

5-2. Lineage

bruin lineage
 

위 명령을 통해 Asset 간 의존성을 시각적으로 확인할 수 있습니다.

  • ingestion → staging → reporting

6. 참고자료/출처