시스템 개발 및 관리/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는 그 철학을 코드에 녹여내는 좋은 예라고 할 수 있죠. 😊