재처리 설계

한 줄 정의

재처리 설계는 배치가 중간에 실패해도 처리 완료 지점과 실패 대상을 기준으로 안전하게 다시 실행할 수 있게 만드는 것이다.

실무에서 왜 문제 되는가

  • 실패 지점이 남지 않으면 처음부터 다시 실행해야 한다.
  • 이미 처리된 데이터를 다시 처리하면 중복 알림, 중복 정산, 중복 상태 변경이 생긴다.
  • 외부 API 호출이 포함되면 내부 상태만으로 완료 여부를 알기 어렵다.
  • 재처리 기준이 없으면 수동 DB 수정이나 임시 스크립트에 의존하게 된다.

실무 판단 기준

상황설계
row 단위 작업대상별 처리 상태 저장
chunk 단위 작업chunk checkpoint 저장
외부 호출 포함idempotency key와 결과 기록
실패 원인 분류retryable/non-retryable 구분

자주 나는 실수

  • 배치 전체 성공/실패만 기록한다.
  • 실패한 데이터를 다시 찾을 기준을 남기지 않는다.
  • 재실행하면 같은 결과로 수렴하는지 테스트하지 않는다.
  • 실패 사유 없이 failed 상태만 남긴다.

확인 방법

  • 중간 실패를 강제로 만들고 재실행 결과를 확인한다.
  • 같은 batch를 두 번 실행해도 결과가 깨지지 않는지 확인한다.
  • 실패 사유, 재시도 횟수, 마지막 처리 시각이 남는지 확인한다.

핵심 요약

재처리 가능한 배치는 실패 지점과 처리 상태를 남긴다.

이미 완료된 작업은 건너뛰거나 같은 결과로 수렴해야 한다.

실패는 재시도 가능한 실패와 불가능한 실패로 나누어야 한다.

외부 API가 포함되면 idempotency key와 결과 확인이 중요하다.

재처리는 운영 절차가 아니라 설계 요구사항으로 다뤄야 한다.

꼬리 질문

  • 실패한 배치를 어디서부터 다시 시작할 것인가?
  • 재처리 시 중복 처리를 어떻게 막을 것인가?
  • retryable 실패와 non-retryable 실패를 어떻게 구분할 것인가?

관련 문서