Dagster로 ETL, 데이터 파이프라인을 구성하다 보면
Definitions(...)와 Definitions.merge(...)라는 구조를 자주 보게 됩니다.
이번 글에서는 이 두 가지 키워드가 무엇을 의미하고, 왜 쓰이는지 간단하게 살펴봅니다.
Definitions란?
Dagster에서 자산(asset), 작업(op), 리소스(resource) 등을 한 곳에 정의하고 모아서 등록하는 컨테이너입니다.
from dagster import Definitions
defs = Definitions(
assets=[etl_asset],
resources={"s3": s3_resource},
)
이처럼 Definitions는 하나의 파이프라인 단위를 구성하는 핵심 블록이에요.
정리하면:
Dagster 앱의 구성요소를 하나의 DAG으로 "등록"해주는 선언부
여러 Definitions을 만들 수는 없을까?
가능합니다.
예를 들어 ETL 작업을 데이터셋 단위로 쪼개서 여러 개 만들고 싶을 수 있겠죠.
# 두 개의 서로 다른 ETL 정의
job1 = Definitions(...)
job2 = Definitions(...)
이런 경우 각각을 분리해서 정의하되, 최종적으로 하나로 묶어 실행해야 Dagster 인스턴스가 인식할 수 있어요.
Definitions.merge()란?
📌 여러 Definitions 인스턴스를 하나로 병합해주는 함수입니다.
defs = Definitions.merge( build_etl_job(...), build_etl_job(...), )
이 구조의 의미는 다음과 같습니다:
- 각각의 build_etl_job(...)은 Definitions를 반환합니다.
- merge()는 이를 하나로 통합해서 실행 가능한 하나의 DAG 정의로 합쳐줍니다.
- 병합 시 내부적으로 assets, resources, jobs, schedules, sensors 등을 자동으로 합칩니다.
요약

Dagster는 구조적으로 복잡한 파이프라인도 모듈 단위로 깔끔하게 정의하고 조합할 수 있도록 설계되어 있습니다.
Definitions와 merge()는 이 구조적 유연성을 유지하면서 확장 가능한 파이프라인을 구성하는 핵심 요소입니다.
'컨테이너·워크플로우 자동화 > Dagster 사용법' 카테고리의 다른 글
| Dagster 프로젝트 구조와 Definitions 위치: 왜, 어디에 어떻게 둬야 할까? (1) | 2025.06.18 |
|---|---|
| DAG란? (0) | 2025.06.10 |
| 자산 팩토리란? 반복되는 자산을 함수로 자동화하기 (0) | 2025.06.10 |
| 스캐폴딩(Scaffolding)이란? — 개발의 뼈대를 세우는 기술 (0) | 2025.06.06 |
| Dagster Config로 단순 예측 모델 설정하기 (0) | 2025.06.06 |