피드로 돌아가기
Sibling Rivalry? How to Make Kestra Tasks Talk to Each Other
Dev.toDev.to
DevOps

Kestra의 Sibling Task Lookup을 통한 Loop 내 데이터 격리 및 동시성 제어

Sibling Rivalry? How to Make Kestra Tasks Talk to Each Other

Amara Graham2026년 4월 22일5intermediate

Context

Dynamic Loop 구조 내에서 실행되는 Task 간 데이터 전달 시, 단순 Task ID 참조만으로는 특정 반복 회차의 데이터를 구분할 수 없는 한계 존재. 특히 Concurrent 실행 환경에서 데이터 혼선 및 Race Condition 발생 가능성이 높은 구조적 제약 분석.

Technical Solution

  • TaskRun Context 기반의 유니크 키(taskrun.value)를 도입하여 반복 회차별 데이터 Scope 분리
  • {{ outputs.task_id[taskrun.value].value }} 구문을 통한 Sibling Task 간의 정밀한 데이터 Lookup 메커니즘 구현
  • 루프 외부 Task에서 특정 반복 결과에 접근하기 위해 정적 키(Static Key)를 명시하는 Indexing 구조 설계
  • 표현식 내 Double Quotes 사용을 통해 String Type을 명시함으로써 Runtime 시의 Type mismatch 및 Value Not Found 에러 방지
  • 대규모 처리 및 Subflow 필요 시 ForEach 대신 ForEachItem을 채택하여 리소스 효율성 최적화

- Dynamic Loop 내 Sibling Task 참조 시 반드시 `taskrun.value`를 키로 포함했는지 확인 - 루프 외부에서 루프 내부 결과 참조 시 특정 iteration의 키값이 정확히 명시되었는지 검토 - 표현식 기반의 값 참조 시 Type Error 방지를 위해 Double Quotes 래핑 적용 - 처리 데이터 규모 및 Subflow 필요 여부에 따라 ForEach와 ForEachItem 중 적절한 오퍼레이터 선택

원문 읽기