시스템 개발 및 관리/Dagster 사용법

Dagster로 시작하는 데이터 엔지니어링 오케스트레이션

Data Jun 2025. 5. 1. 16:03

데이터를 다루는 사람이라면 '데이터 오케스트레이션'이라는 단어를 한 번쯤 들어보셨을 것입니다. ETL, ELT, 데이터 파이프라인, 워크플로우 관리 등의 기능을 지원함으로써 실질적인 사용 효율을 높이는 것이 바로 데이터 오케스트레이션의 핵심입니다. 최근에는 다양한 프레임워크들이 등장하면서 이러한 파이프라인을 더욱 효율적으로 관리할 었습니다.

 

데이터 오케스트레이션이란?

데이터 오케스트레이션(Data Orchestration)은 여러 데이터 작업 단계를 체계적으로 연결하고 조율하는 기술입니다. 개별 처리 작업들을 순차적으로 실행하거나 병렬로 처리하고, 전체 워크플로우를 안정적으로 운영할 수 있도록 설계합니다.

가장 많이 사용되는 대표적인 오케스트레이터는 Apache Airflow이며, 최근 주목받고 있는 현대적인 방식의 오케스트레이터로는 Dagster가 있습니다.

Dagster의 기본 개념

Dagster는 다른 오케스트레이터 도구들과 달리, '데이터 자산(Asset)'을 중심으로 구성되는 것이 특징입니다.

각 Asset은 하나의 결과물 또는 데이터 단위입니다. 예를 들어, CSV 파일, 데이터베이스 테이블, Parquet 디렉터리 등 다양한 형태가 될 수 있습니다.

Dagster는 이러한 Asset 간의 의존 관계(dependency)를 명확하게 구성하고 관리하는 데 초점을 맞추고 있습니다.

 

Dagster Asset 예제

import dagster as dg

@dg.asset
def hello(context: dg.AssetExecutionContext):
    context.log.info("Hello!")

@dg.asset(deps=[hello])
def world(context: dg.AssetExecutionContext):
    context.log.info("World!")

defs = dg.Definitions(assets=[hello, world])

이 예제는 다음과 같습니다:

  • hello 자산은 "Hello!"를 로그로 출력하고
  • world는 hello 자산이 먼저 실행된 이후에 활성화되는 자산입니다.
  • defs = Definitions(...)를 통해 Dagster에게 어떤 자산들을 사용할지 등록합니다.

 

UI 패널에서는:

Dagit 웹 UI에서는 위 자산 관계가 다음과 같은 DAG(Directed Acyclic Graph) 형태로 시각화됩니다:

[ hello ] ---> [ world ]

각 자산 간의 흐름이 직관적으로 표현되며, 복잡한 DAG에서도 이해하기 쉬운 구조를 유지할 수 있는 것이 Dagster의 강점입니다.

 

마무리

Dagster는 데이터 자산 중심의 설계를 통해, 복잡한 파이프라인을 명확하고 선언적으로 구성할 수 있도록 도와줍니다. 중간 결과물을 명시적으로 표현하고, 작업 간 의존성을 자연스럽게 정의할 수 있어 유지보수성과 확장성이 매우 뛰어납니다.