실패 상태 관리
한 줄 정의
실패 상태 관리는 배치 작업의 성공, 실패, 재시도 가능 여부, 실패 사유를 기록해 복구와 분석이 가능하게 만드는 것이다.
실무에서 왜 문제 되는가
- 실패 사유가 없으면 재실행할지 수동 보정할지 판단하기 어렵다.
- 처리 상태가 단순하면 중복 처리와 누락 처리를 구분할 수 없다.
- 재시도 횟수 제한이 없으면 같은 실패가 반복된다.
- 실패 알림만 있고 처리 대상 정보가 없으면 복구가 늦어진다.
실무 판단 기준
| 상태 | 의미 |
|---|---|
| pending | 아직 처리 전 |
| processing | 처리 중 |
| completed | 처리 완료 |
| failed_retryable | 재시도 가능 실패 |
| failed_final | 수동 확인 또는 보정 필요 |
자주 나는 실수
- 실패를 boolean 하나로만 저장한다.
- 실패 사유와 stack trace를 전혀 남기지 않는다.
- processing 상태에서 멈춘 작업을 복구할 기준이 없다.
- 재시도 횟수와 마지막 시도 시각을 남기지 않는다.
확인 방법
- 실패한 작업 목록을 운영자가 조회할 수 있는지 확인한다.
- 오래된 processing 상태를 감지할 수 있는지 확인한다.
- 재시도 횟수 초과 시 final 실패로 전환되는지 테스트한다.
핵심 요약
배치 실패 상태는 재처리 판단을 위한 데이터다.
성공/실패 boolean보다 처리 상태와 실패 사유를 나누는 것이 좋다.
processing에서 멈춘 작업을 복구할 timeout 기준이 필요하다.
재시도 횟수와 마지막 시도 시각은 반복 실패를 제어하는 데 필요하다.
운영자는 실패 대상과 이유를 확인할 수 있어야 한다.
꼬리 질문
- 배치 상태는 어떤 값으로 나눌 것인가?
- processing에서 멈춘 작업은 어떻게 복구할 것인가?
- 실패 사유는 어디까지 저장할 것인가?