Dagster 통합

GenD는 Dagster를 배치 파이프라인 오케스트레이션 엔진으로 사용합니다. Dagster의 asset, sensor, schedule, check 기능과 연동하여 데이터 파이프라인을 관리합니다.
주요 기능
- Dagster 상태 모니터링: Dagster 서버의 전체 상태와 실행 중인 작업을 조회합니다
- 파이프라인 실행 연동: GenD에서 생성한 파이프라인 템플릿을 Dagster job으로 실행합니다
- 품질 검사 연동: Dagster asset check를 통한 데이터 품질 검사 결과를 조회합니다
- 실행 이력 통합: Dagster의 실행 이력을 GenD 모니터링 대시보드에 통합합니다
Dagster 연동 아키텍처
GenD API → dagster_client.py → Dagster GraphQL API (port 3000)
→ pipeline_monitor.py
GenD는 dagster_client.py 서비스를 통해 Dagster의 GraphQL API에 접속하여 작업을 트리거하고 상태를 조회합니다.
모니터링 항목
| 항목 | 설명 |
|---|---|
| 실행 중 작업 수 | 현재 실행 중인 Dagster run 수 |
| 성공/실패 비율 | 최근 run의 성공/실패 통계 |
| 마지막 실행 시간 | 가장 최근 run의 완료 시간 |
| 품질 검사 결과 | asset check 통과/실패 현황 |
launchRun selector 3-tuple
launchRun GraphQL 호출 시 ExecutionParams.selector 는 repositoryLocationName / repositoryName / jobName 세 필드 모두 required 입니다. 누락 시 webserver 가 HTTP 500 + GraphQL validation error 를 반환합니다.
GenD API 는 다음 환경변수로 Dagster 와의 연결 (GraphQL URL) 및 selector location/repo 를 결정합니다 — 단일 Dagster definition 환경의 기본값과 일치합니다.
selector 결정 (3-tuple 중 location / repo):
| 환경변수 | 기본값 | 비고 |
|---|---|---|
GEND_DAGSTER_REPOSITORY_LOCATION_NAME | gend_pipelines:defs | Dagster Definitions 객체의 location 이름. <package>:defs 형식이 표준 |
GEND_DAGSTER_REPOSITORY_NAME | __repository__ | Dagster 가 자동 부여하는 단일 repository 이름 |
연결 URL (selector 와는 직접 무관, 별도 관심사):
| 환경변수 | 기본값 | 비고 |
|---|---|---|
GEND_DAGSTER_GRAPHQL_URL | http://dagster-webserver.gend.svc.cluster.local:3000/dagster/graphql | webserver --path-prefix /dagster 와 일치 |
멀티 location 환경에서는 env 로 override 하세요.
API 엔드포인트
| Method | Path | Description |
|---|---|---|
| GET | /api/v1/pipelines/monitor/dagster | Dagster 모니터링 요약 |