2026년 4월 21일 화요일
글 목록
Lv.2 초급데이터 엔지니어링
25분 읽기Lv.2 초급
시리즈Data Engineering 플레이북 · 파트 3/7시리즈 허브 보기

Data Engineering Playbook Part 3: 데이터 파이프라인 구축 실전 가이드

Data Engineering Playbook Part 3: 데이터 파이프라인 구축 실전 가이드

이 글은 2026년 기준 데이터 파이프라인 설계와 운영의 실무 기준을 정리합니다. ETL/ELT/Zero-ETL 선택 기준부터 dbt 3계층 모델링, Airflow·Dagster·Prefect 오케스트레이션 비교, Kafka+Flink 스트리밍 패턴까지 한 번에 다룹니다. 마지막에는 신뢰성 원칙과 모니터링 체크리스트를 통해 운영 단계에서 바로 적용할 수 있는 기준을 제공합니다.

시리즈 구성

  • Part 1: 개요와 2026 핵심 트렌드 (완료)
  • Part 2: 데이터 아키텍처 설계 (완료)
  • Part 3: 데이터 파이프라인 구축 실전 가이드 (현재 글)
  • Part 4: 데이터 품질과 거버넌스 (예정)
  • Part 5: 클라우드 인프라와 FinOps (예정)
  • Part 6: AI-Native 데이터 엔지니어링 (예정)
  • Part 7: DataOps 팀 운영 플레이북 (예정)

목차

  1. 데이터 파이프라인이란?
  2. ETL vs ELT vs Zero-ETL: 무엇을 선택할까
  3. Ingestion: 데이터를 어떻게 가져올까
  4. Transformation: dbt 실전 패턴
  5. Orchestration: Airflow vs Dagster vs Prefect
  6. Streaming: Kafka + Flink 설계
  7. 신뢰성: 믿을 수 있는 파이프라인 만드는 법
  8. 모니터링과 알림 설계
  9. 실전 체크리스트

1. 데이터 파이프라인이란?

데이터 파이프라인은 여러 소스에서 데이터를 수집하고, 필요한 변환을 적용한 뒤, 분석/서비스 시스템으로 안정적으로 전달하는 자동화 흐름이다.
한 줄로 요약하면, 데이터를 "계속 쓸 수 있는 상태"로 공급하는 운영 시스템이다.

소스 시스템(DB, API, 이벤트, 파일, SaaS)
-> 수집(Ingestion)
-> 변환(Transformation)
-> 저장(Storage)
-> 제공(Serving: BI, ML, API)

파이프라인이 불안정하면 영향은 매우 넓다. 잘못된 대시보드, 늦은 리포트, 품질이 떨어진 모델 추론까지 결국 같은 문제로 연결된다.


2. ETL vs ELT vs Zero-ETL

핵심 차이: "어디에서 변환하나?"

ETL: Source -> Transform -> Load
- 별도 처리 레이어에서 먼저 변환한 뒤 웨어하우스에 적재
- 규제/컴플라이언스가 강한 환경에서 여전히 유효

ELT: Source -> Load -> Transform
- 원시 데이터를 먼저 적재하고 웨어하우스 내부에서 변환
- 현대 클라우드 분석 스택의 기본 선택지

Zero-ETL: Source -> Direct integration/query -> Analysis
- 파이프라인 운영 부담과 데이터 이동량 최소화
- 품질/거버넌스/의미 모델링 이슈는 별도로 관리 필요
항목ETLELT
변환 위치별도 처리 계층클라우드 웨어하우스 내부
원시 데이터 보관제한적재처리 용도로 보관 가능
스키마 변경 대응사전 정의 중심비교적 유연
보안/컴플라이언스로드 전 마스킹/정제 유리로드 후 통제 체계 필수
비용 구조별도 처리 비용웨어하우스 컴퓨팅 비용

2026 실무 권고

  • 기본값은 ELT로 두고 시작한다.
  • 규제 강도, 민감정보 처리, 레거시 시스템 제약이 크면 ETL 또는 하이브리드를 사용한다.
  • Zero-ETL은 이동을 줄여주지만, 데이터 품질/정의 통합 문제를 자동으로 해결해주지는 않는다.

3. Ingestion: 데이터를 어떻게 가져올까

배치 수집

도구특징적합한 상황
Fivetran관리형 커넥터, 자동 스키마 추적빠른 SaaS 연동
Airbyte오픈소스, 커스텀 확장 유리벤더 종속 최소화
AWS Glue서버리스 ETLAWS 중심 환경

스트리밍 수집

Event Sources -> Kafka -> Flink -> Serving Store
- 앱 이벤트 / IoT / CDC 스트림
- 대상: Iceberg, Warehouse, OLAP DB

CDC(Change Data Capture)는 트랜잭션 DB의 변경(INSERT/UPDATE/DELETE)을 이벤트로 추출해 전달하는 방식이다.

PostgreSQL -> Debezium(CDC) -> Kafka -> Data Lake/Warehouse
(near real-time replication)

4. Transformation: dbt 실전 패턴

dbt는 ELT의 T를 담당하는 SQL 기반 프레임워크다.
변환 로직을 코드로 관리하고, 테스트와 문서화를 통해 운영 신뢰성을 높인다.

3계층 모델링

my_dbt_project/
  models/
    staging/
      stg_orders.sql
      stg_customers.sql
    intermediate/
      int_order_items_joined.sql
    marts/
      core/fct_orders.sql
      marketing/dim_customers.sql
  tests/
  macros/
  dbt_project.yml
  • staging: 소스 정규화(이름/타입 정리)
  • intermediate: 조인, 비즈니스 중간 계산
  • marts: BI/ML이 직접 조회하는 최종 모델

예시: Staging 모델

with source as (
  select * from {{ source('raw', 'orders') }}
),
renamed as (
  select
    id as order_id,
    user_id as customer_id,
    status as order_status,
    created_at as ordered_at,
    amount_cents / 100.0 as order_amount_usd
  from source
)
select * from renamed

예시: 데이터 테스트

version: 2

models:
  - name: fct_orders
    columns:
      - name: order_id
        tests: [unique, not_null]
      - name: order_status
        tests:
          - not_null
          - accepted_values:
              values: ['placed', 'shipped', 'delivered', 'cancelled']

Materialization 선택

Table
- 최종 마트 모델에 적합

View
- 단순 변환에 적합

Incremental
- 대용량 이벤트/로그 테이블에 적합
- unique_key + upsert 전략 필수

Ephemeral
- 보조 변환 로직 재사용에 적합(CTE 컴파일)

5. Orchestration: Airflow vs Dagster vs Prefect

오케스트레이터는 파이프라인의 실행 순서, 재시도, 의존성, 장애 대응을 관리한다.

항목AirflowDagsterPrefect
핵심 모델DAG/TaskAssetFlow/Task
장점생태계/검증된 운영성계보/자산 중심 설계Python-first DX
주의점초기 운영 복잡도학습 곡선대규모 사례는 상대적으로 적음

6. Streaming: Kafka + Flink 설계

Kafka 핵심 개념

Topic: 이벤트 카테고리
Partition: 병렬 처리 단위
Consumer Group: 파티션을 나누어 읽는 소비자 집합
Offset: 파티션 내 이벤트 위치
Retention: 이벤트 보관 기간

Flink 처리 예시

from pyflink.datastream import StreamExecutionEnvironment
from pyflink.common import WatermarkStrategy, Duration

env = StreamExecutionEnvironment.get_execution_environment()
env.set_parallelism(4)

transactions = env.from_source(
    kafka_source,
    WatermarkStrategy.for_bounded_out_of_orderness(Duration.of_seconds(5)),
    "Kafka Transactions"
)

스트리밍 레이크하우스 패턴

Event Sources
-> Kafka topics (durable log)
-> Flink (filter/join/window/feature compute)
-> Iceberg (Bronze/Silver)
-> Trino/Spark SQL (batch/ad-hoc)
-> Redis/Cassandra (low-latency serving)

7. 신뢰성: 믿을 수 있는 파이프라인 만드는 법

원칙 1. 멱등성(Idempotency)

같은 작업을 여러 번 실행해도 결과가 같아야 한다.

insert into orders_summary
select date, sum(amount) as total
from orders
group by date
on conflict (date) do update
set total = excluded.total;

원칙 2. Fail Fast

문제가 있으면 초기에 즉시 실패시켜야 한다.

def validate_orders(df):
    if df[['order_id', 'customer_id', 'amount']].isnull().any().any():
        raise ValueError("필수 컬럼 NULL 발견")
    if (df['amount'] < 0).any():
        raise ValueError("음수 금액 발견")

원칙 3. 재처리 가능성(Reprocessability)

원시(Bronze) 보존 후, Silver/Gold를 다시 계산할 수 있어야 한다.

1) Bronze 보존
2) 변환 로직 수정
3) Silver 재실행
4) Gold 재실행

원칙 4. Backfill 지원

특정 과거 구간을 안전하게 재실행할 수 있어야 한다.


8. 모니터링과 알림 설계

핵심 4지표

1) Success Rate: 연속 실패 감지
2) Freshness: SLA 시간 내 최신화 여부
3) Volume Anomaly: 입력량 급증/급감 감지
4) Runtime: 실행 시간 증가 추세 감지

알림은 "조치 가능"해야 한다

def alert_slack_on_failure(context):
    dag_id = context['dag'].dag_id
    task_id = context['task_instance'].task_id
    log_url = context['task_instance'].log_url
    message = f"[FAIL] {dag_id}.{task_id} | {log_url}"
    send_slack_message(channel="#data-alerts", message=message)

9. 실전 체크리스트

설계

  • ETL/ELT/Zero-ETL 선택 근거가 문서화되어 있는가
  • 민감정보 처리(마스킹/권한/감사)가 파이프라인에 반영되어 있는가

수집

  • 스키마 변경 감지와 대응 규칙이 있는가
  • CDC 지연 허용 범위(SLA)가 정의되어 있는가

변환

  • staging/intermediate/marts 계층이 분리되어 있는가
  • 핵심 모델에 not_null, unique 테스트가 있는가

운영

  • 재시도/백필/재처리 경로가 준비되어 있는가
  • 실패 알림이 실제 조치 단위로 연결되는가

마무리

좋은 파이프라인의 목표는 "흐르게 만드는 것"이 아니라, 신뢰 가능한 데이터 제품을 지속적으로 공급하는 것이다.
기술 선택(ELT, dbt, 오케스트레이터, 스트리밍)은 결국 이 목표를 얼마나 안정적으로 달성하느냐로 평가해야 한다.

다음 Part 4에서는 데이터 품질과 거버넌스를 코드로 구현하는 DataGovOps 실전 패턴을 다룬다.

이 글 공유하기

시리즈 내비게이션

Data Engineering 플레이북

3 / 7 · 3

같은 주제 더 보기·대표 시리즈로 시작

English

최신 글을 RSS로 받아보세요

뉴스레터 오픈 전에는 RSS로 먼저 업데이트를 받아보실 수 있습니다.

RSS 구독 안내 보기