파이썬/기초 프로그래밍

데이터 엔지니어링에서 Enum을 활용한 ETL 파이프라인 설계

Data Jun 2025. 11. 28. 10:05

데이터 엔지니어링에서는 주기적으로 데이터를 수집(Extract), 변환(Transform), 적재(Load) 하는 ETL 파이프라인을 구축합니다. 하지만 단계가 늘어나고 로직이 복잡해질수록 코드 관리가 점점 어려워집니다.

 

특히 다음과 같은 문제가 자주 발생합니다.

  • 단계별 로직을 if-elif로 처리하면서 코드가 복잡해짐
  • 단계 추가/변경 시 기존 코드를 수정해야 함
  • 파이프라인 전체를 한눈에 파악하기 어려움

이때 Enum을 활용하면 단계 정의와 로직 분리를 깔끔하게 정리할 수 있습니다.

 

1. ETL 단계를 Enum으로 정의

ETL 파이프라인에서 고정적으로 사용되는 단계들을 Enum으로 관리합니다.

import enum

class ETLStep(enum.Enum):
    EXTRACT = enum.auto()
    TRANSFORM = enum.auto()
    LOAD = enum.auto()

✔ Int나 문자열 대신 Enum을 사용해 단계의 의미가 명확해짐
✔ IDE 자동완성 → 실수 방지
✔ 파이프라인 단계가 늘어나도 구조 유지 가능

 

2. 단계별 로직 분리

각 단계는 독립적인 함수로 구현합니다.
이렇게 해야 유지보수도 쉽고 테스트도 편합니다.

def extract():
    print("Extracting data...")

def transform():
    print("Transforming data...")

def load():
    print("Loading data...")

 

3. Enum과 단계별 로직을 매핑

핵심은 Enum을 기준으로 기능을 연결하는 매핑 구조입니다.

ETL_RUNNER = {
    ETLStep.EXTRACT: extract,
    ETLStep.TRANSFORM: transform,
    ETLStep.LOAD: load
}

✔ if-elif 없이 단계별 기능 연결
✔ 새로운 단계가 추가되더라도 매핑만 추가하면 됨
✔ 전체 ETL 구조를 한눈에 파악 가능

 

4. ETL 실행기 만들기

Enum을 입력받아 매핑된 함수를 호출하는 구조입니다.

def run_step(step: ETLStep):
    ETL_RUNNER[step]()

사용은 이렇게 간단합니다:

run_step(ETLStep.EXTRACT)
run_step(ETLStep.TRANSFORM)
run_step(ETLStep.LOAD)

 

 

정리하면

 

데이터 엔지니어링에서는 파이프라인이 커질수록
“단계 관리”가 어려워집니다.

Enum을 활용한 ETL 단계 설계는

  • 코드 구조를 단순화하고
  • 단계 추가/변경을 쉽게 만들며
  • 파이프라인 안정성을 높이는

가장 실용적인 설계 방법 중 하나입니다.