Task 및 Asset State Store 개요
Task 및 Asset State Store 개요 (Task and Asset State Store Overview)
3.3 버전에 추가된 Task store와 Asset store의 개념을 정리한 문서예요. Airflow가 전통적으로 태스크를 상태 없는(stateless)·멱등한 작업 단위로 다뤘지만, 워커가 죽어도 살아남아야 하는 job ID나 실행마다 앞으로 나아가는 watermark 같은 데이터를 따로 저장해야 할 때가 있어요. 이 두 저장소가 XCom이나 Variable 시스템을 건드리지 않고 그 공백을 메워 줘요.
출처: 문서
본문
3.3 버전에 추가됨 (Added in version 3.3).
Airflow는 항상 태스크를 상태가 없고(stateless) 멱등한 작업 단위로 모델링해 왔어요. 그런데 점점 더 많은 워크로드가 태스크의 반환값 밖에 어떤 데이터를 영속화하길 요구해요. 예를 들어 워커가 죽어도 살아남아야 하는 제출된 job ID, 실행마다(run-by-run) 앞으로 나아가는 watermark, 관측 가능성을 위해 노출하는 행(row) 카운터 같은 것들이죠. Task store와 Asset store는 XCom이나 Variable 시스템을 건드리지 않고 그 공백을 채워 줘요.
Task 및 Asset State Store
Task store와 Asset store는 job ID, watermark, 행(row) 개수 같은 데이터를 영속화하기 위한 두 개의 key/value 저장소를 제공해요. 이 두 저장소는 무엇을 기준으로 스코프가 정해지는지에 따라 구분돼요:
| Store | Scope | Default lifetime | Primary use case |
|---|---|---|---|
| Task store | 단일 Task Instance (dag_id + run_id + task_id + map_index) | 보존(retention) 기간을 설정 가능; clear_on_success = True면 태스크 성공 시 정리됨 |
재시도에서 살아남기, 진행 중인 job 추적, 실행 내 진행 상황 체크포인트, 이전 실행이 설정한 체크포인트에서 진행 재개 |
| Asset store | 자산(asset, 특정 실행과 무관) | 무기한 영속; asset이 비활성화될 때만 제거됨 | 실행 간 watermark, 증분 로드 커서, asset별 메타데이터 |
두 저장소 모두 JSON으로 직렬화 가능한 값을 받아들여요. 값은 기본 metastore 백엔드를 사용해 저장하거나, 커스텀 워커 사이드 백엔드로 오프로드할 수 있어요.
Task 및 Asset State Store를 언제 써야 할까요?
자신의 유스케이스에 맞는 메커니즘을 고르는 데 아래 표를 활용해 보세요.
| Mechanism | When to use it |
|---|---|
| XCom | 단일 Dag 실행 내에서 태스크 간에 데이터를 전달할 때(예: 한 태스크의 출력을 다운스트림 태스크가 소비) 또는 서로 다른 여러 Dag 실행 간에 데이터를 전달할 때(다른 실행에서 영속화한 데이터를 참조). XCom은 재시도 시 정리되므로, 태스크 재시도나 실행 간에 데이터를 영속화하는 데는 쓰면 안 돼요. |
| Variables | 배포 전체 또는 설치 전체에 걸친 구성으로, 자주 바뀌지 않고 태스크 자신이 아니라 운영자가 설정하는 값. |
| Task store | 워커 크래시를 견뎌야 하는 데이터, 또는 같은 실행 내에서 재시도 사이에 살아남아야 하는 데이터. 오래 걸리는 job이 끝나기 전에 기록해 두는 외부 job ID가 task store의 완벽한 유스케이스예요. |
| Asset store | asset 이벤트를 가로지르거나 asset을 "watching"하는 동안 영속되어야 하고, 태스크가 아니라 asset이 논리적으로 소유하는 데이터. 예를 들어 객체 스토리지에 파일이 놓일 때마다 앞으로 나아가는 watermark 같은 거예요. |
참고 (Note)
현재 구현이 XCom 기반 패턴을 이미 잘 활용하고 있다면 task store로 마이그레이션할 필요는 없어요. Task store는 XCom이 원래 설계되지 않은 문제를 풀기 위한 것이에요.
더 읽을거리 (Further reading)
- Task State Store: 전체 API 참조 및 유스케이스 예시
- Asset State Store: watermark 패턴 및 API 참조
- Task and Asset State Store Configuration: 보존(retention), GC, 커스텀 백엔드