Dagster 리소스(Resource)
Dagster 리소스(Resource)
리소스(resource)는 데이터베이스·API 연결 같은 외부 리소스를 Dagster 엔티티(에셋·스케줄·센서)에 주입해 주는 방식이에요. 파이프라인 실행 중에 연결을 열고, 실행이 끝나면 정리하는 책임까지 지니고 있어요. ConfigurableResource는 구조화된 설정을 쓰는 리소스예요.
리소스가 왜 필요한가
데이터 파이프라인은 대개 DB·스토리지·API 같은 외부 시스템을 다뤄요. 이런 연결을 에셋 코드 안에 하드코딩하면 테스트·교체가 어려워져요. 리소스로 분리하면 연결 방법을 한곳에서 정의해 두고, 여러 에셋·잡이 필요할 때 주입받아 사용할 수 있어요.
리소스 정의와 사용
리소스는 ResourceDefinition으로 정의하고, ConfigurableResource를 상속하면 구조화된 설정을 받을 수 있어요. 에셋이나 잡이 리소스에 접근하려면 인자로 주입받아요. 예를 들어 에셋 함수 시그니처에 리소스를 선언하면 Dagster가 실행 시 주입해줘요.
import dagster as dg
class MyDB(dg.ConfigurableResource):
...
@dg.asset
def load_data(db: MyDB): ...
리소스의 역할
- 외부 연결(DB·API)을 파이프라인에 주입
- 실행 완료 후 연결 정리·리소스 해제
- 설정을 구조화해 환경별로 바꿔치기 용이
모의(mock) 리소스로 교체하면 테스트를 쉽게 할 수 있고, 환경(개발/프로덕션)에 따라 다른 실제 리소스를 연결할 수도 있어요.
리소스와 코드 로케이션
리소스는 정의된 전체와 함께 최상위 Definitions 객체에 포함되어 배포돼요. 코드 로케이션(code location)별로 파이썬 환경을 격리해 배포하므로, 리소스 의존성도 함께 격리·관리할 수 있어요.
더 알아보기
- 에셋과 리소스: Assets
- 개념 전체: Dagster Concepts