실패 상태 관리

한 줄 정의

실패 상태 관리는 배치 작업의 성공, 실패, 재시도 가능 여부, 실패 사유를 기록해 복구와 분석이 가능하게 만드는 것이다.

실무에서 왜 문제 되는가

  • 실패 사유가 없으면 재실행할지 수동 보정할지 판단하기 어렵다.
  • 처리 상태가 단순하면 중복 처리와 누락 처리를 구분할 수 없다.
  • 재시도 횟수 제한이 없으면 같은 실패가 반복된다.
  • 실패 알림만 있고 처리 대상 정보가 없으면 복구가 늦어진다.

실무 판단 기준

상태의미
pending아직 처리 전
processing처리 중
completed처리 완료
failed_retryable재시도 가능 실패
failed_final수동 확인 또는 보정 필요

자주 나는 실수

  • 실패를 boolean 하나로만 저장한다.
  • 실패 사유와 stack trace를 전혀 남기지 않는다.
  • processing 상태에서 멈춘 작업을 복구할 기준이 없다.
  • 재시도 횟수와 마지막 시도 시각을 남기지 않는다.

확인 방법

  • 실패한 작업 목록을 운영자가 조회할 수 있는지 확인한다.
  • 오래된 processing 상태를 감지할 수 있는지 확인한다.
  • 재시도 횟수 초과 시 final 실패로 전환되는지 테스트한다.

핵심 요약

배치 실패 상태는 재처리 판단을 위한 데이터다.

성공/실패 boolean보다 처리 상태와 실패 사유를 나누는 것이 좋다.

processing에서 멈춘 작업을 복구할 timeout 기준이 필요하다.

재시도 횟수와 마지막 시도 시각은 반복 실패를 제어하는 데 필요하다.

운영자는 실패 대상과 이유를 확인할 수 있어야 한다.

꼬리 질문

  • 배치 상태는 어떤 값으로 나눌 것인가?
  • processing에서 멈춘 작업은 어떻게 복구할 것인가?
  • 실패 사유는 어디까지 저장할 것인가?

관련 문서