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

Dagster @asset에서 context와 owners 옵션은 어떤 역할일까?

Data Jun 2025. 5. 14. 21:58

Dagster로 데이터 자산을 정의할 때, @asset 데코레이터를 사용합니다.
그런데 다음처럼 비슷해 보이는 자산 정의에서도 차이가 나는 경우가 있습니다.

@asset
def daily_sales():
    ...

@asset
def weekly_sales() -> None:
    ...

@asset(owners=["team:data"])
def weekly_sales_report(context: AssetExecutionContext):
    context.log.info("Creating sales report...")

이 글에서는 이 중 두 가지 궁금증을 정리해 봅니다:

 

어떤 함수는 context를 받고, 어떤 함수는 안 받는 이유는?

context는 Dagster가 자산 실행 시 넘겨주는 실행 컨텍스트 객체입니다.
함수 내부에서 다음과 같은 기능이 필요할 때 사용합니다:

  • 로그 출력 (context.log.info("..."))
  • 자산 이름, 구성 옵션 확인
  • 연결된 외부 리소스(DB, S3 등)에 접근

즉, 자산 함수가 단순한 계산만 하면 context는 생략해도 되고,
로그 출력이나 리소스 접근 등 고급 기능이 필요하면 인자로 받으면 됩니다.

 

 

owners 옵션은 무슨 역할인가요?

@asset(owners=["bighead@hooli.com", "team:analytics"])

owners는 이 자산의 책임자 또는 관리 주체를 명시하는 메타데이터입니다.

  • Dagster UI에서 자산을 클릭하면 소유자 정보가 표시
  • 운영/모니터링/알림 시스템 연동 시 참고 정보로 활용 가능
  • 팀 협업 시 자산의 책임 범위를 명확히 정리 가능

단, owners는 기능적인 동작에 직접 영향을 주진 않습니다. (예: 권한 제어는 아님)

 

마무리 요약

Dagster는 단순한 파이프라인 구성 도구를 넘어서,
운영 관점에서 자산을 추적하고 관리하는 철학을 가지고 있습니다.
context와 owners는 그 철학을 코드에 녹여내는 좋은 예라고 할 수 있죠. 😊