본문으로 건너뛰기

오류 처리

노드 실패를 다루는 방법은 4계층입니다 — 노드 설정(재시도/계속), 에러 출력 포트(브랜치 분기), 에러 워크플로우(별도 워크플로우 발화), Saga 보상(분산 롤백).

노드 실행 설정

NDV 의 노드 설정에서 노드 단위 실패 동작을 제어합니다.

설정동작
retryOnFailon/off + maxTries(15) + waitBetweenTries(05000ms)실패 시 지정 횟수만큼 재시도. 시도마다 타임아웃이 개별 적용됩니다
executeOnceon/off입력이 여러 아이템이어도 첫 아이템만 처리
alwaysOutputDataon/off출력이 비어도 빈 아이템 1개를 내보내 하류 실행이 이어지게 함
onErrorstopWorkflow(기본) / continueRegularOutput / continueErrorOutput실패 시: 워크플로우 중단 / 에러 아이템을 정상 출력으로 계속 / 에러 포트로 분기

에러 출력 포트

onError = continueErrorOutput 을 켜면 노드에 빨간 error 포트가 추가됩니다.

  • 노드가 실패하면 오류 정보를 담은 아이템이 error 포트의 브랜치로 흐르고, 정상 브랜치는 실행되지 않습니다.
  • 실패 알림 전송, 대체 처리 등 실패 전용 흐름을 같은 워크플로우 안에 만들 수 있습니다.
  • error 포트를 연결하지 않은 채 실패하면 해당 브랜치는 정상 종결 처리됩니다.

관련 노드: 오류 중단(Stop and Error) — 조건에 따라 워크플로우를 의도적으로 실패시킬 때 사용합니다.

에러 워크플로우

워크플로우 설정의 errorWorkflow에러 트리거로 시작하는 워크플로우를 지정하면, 실패 시 자동으로 실행됩니다(실패 실행 정보가 페이로드로 전달, mode=error). → 트리거 종류

Saga 보상 (분산 트랜잭션)

여러 외부 시스템을 건드리는 워크플로우에서 중간 노드가 실패하면, 엔진의 Saga 서브시스템이 이미 성공한 스텝을 역순으로 보상(롤백)합니다.

  • 보상은 보상을 구현한 노드 서비스에 한해 실행됩니다(미구현 노드는 건너뜀으로 기록).
  • 보상 요청 전달은 at-least-once 이므로 보상 로직은 멱등하게 동작합니다.
  • 보상이 시간 내 끝나지 않으면 recovery 스케줄러가 재시도하고, 한도를 넘으면 수동 개입 대상으로 전환됩니다(Saga 관리 API/대시보드에서 재시도·수동 완료·중단 처리).

일반 사용자는 별도 설정 없이 동작하며, 운영자는 Saga 대시보드에서 보상 상태를 모니터링합니다.

실패 진단 순서 (권장)

  1. 실행 이력에서 실패 실행을 열어 빨간 노드를 확인합니다.
  2. NDV 의 error 탭에서 오류 메시지와 입력 데이터를 봅니다.
  3. 입력을 pin 하고 부분 실행으로 해당 노드만 반복 실행하며 파라미터를 수정합니다.
  4. 재발 방지가 필요하면 재시도/에러 포트/에러 워크플로우를 설정합니다.