실패할 때마다 반복 실행하면 일시 오류를 줄이기보다 부하와 중복 결과를 늘릴 수 있습니다. 최초 실행을 포함한 시도 횟수, 오류 종류와 다음 실행 시각을 따로 남깁니다.
아래 업무 ID, 사람·팀 이름, 날짜와 값은 구조를 설명하기 위한 가상 자료입니다. 실제 고객 정보나 현장 성과를 포함하지 않습니다.
몇 번 재시도와 총 몇 번 실행은 다르다
“세 번까지 다시 해요”라는 안내는 처음 실행을 빼고 세 번인지, 처음부터 총 세 번인지 모호합니다. 이 글은 최초 실행을 포함해 총 시도 한도 3을 사용하는 예시입니다. 처음 실패했으면 완료시도수는 1이고 남은 실행 기회는 2입니다. 세 번째 실행까지 실패하면 네 번째는 자동으로 시작하지 않습니다.
시도수는 성공·실패로 결과가 돌아온 실행을 셉니다. 아직 실제 요청을 보내지 않은 R-008은 0입니다. 네트워크 오류를 기록한 알림 수가 실제 요청 수와 같지는 않을 수 있으므로 실행 ID와 대상 요청 키를 연결해야 합니다. 내부 도구가 이미 재시도한다면 바깥 재시도와 합쳐 대상 시스템에 몇 번 호출되는지도 확인합니다.
오류를 다시 하면 나을 종류부터 구분하기
일시적인 연결 오류나 서비스의 명시적인 재시도 안내는 재시도를 검토할 수 있습니다. 반면 누락된 필수값, 잘못된 권한, 존재하지 않는 대상은 기다린다고 고쳐지지 않을 수 있습니다. 이런 오류는 입력이나 설정을 수정해야 하므로 수동중단으로 분리하고 같은 요청을 반복하지 않습니다.
시간초과는 결과를 못 받았다는 뜻이며 대상에 작업이 반영되지 않았다는 확정이 아닙니다. R-005는 대상반영확인이 미확인이라 결과대조입니다. 다시 실행하기 전에 대상의 접수나 결과 ID를 조회해야 합니다. 반영이 확인된 경우에는 추가 실행하지 않고 완료 결과를 연결하는 방식으로 정리합니다.
대기시간을 숫자로 계산하고 경계에서 멈추기
이 샘플의 단순 대기는 기본대기초×2의 완료시도수-1승입니다. 첫 실패 뒤 10초, 두 번째 실패 뒤 20초입니다. 총한도 3에 도달한 행은 대기시간을 계산해도 다음 실행이 허용되지 않으므로 빈칸으로 둡니다. 재시도 가능 여부를 먼저 판정하고 간격은 그 다음에 계산해야 합니다.
실제 자동화는 여러 요청이 같은 시각에 몰리는 문제를 고려해 대기시간에 분산을 주거나 대상 서비스가 안내한 재시도 시각을 따라야 할 수 있습니다. 10초와 배수 2는 운영 예시이며 제품 기본 설정이라는 뜻이 아닙니다. 전체 업무 기한이 짧다면 시도 횟수 외에 최대 대기 시간도 함께 제한합니다.
같은 요청을 재실행할 때 지켜야 할 것
재시도할 때마다 새 키를 만들면 중복 요청을 구분하기 어려워집니다. R-001의 RK-01은 다음 실행에도 유지합니다. 요청 내용이 수정됐다면 같은 키가 같은 의도를 나타내는지 확인하고 변경 요청을 별도로 관리합니다. 사용 중인 서비스가 멱등 키를 지원하지 않으면 기록표만으로 반복 효과를 막을 수 없습니다.
실패 후 자동으로 다른 담당자에게 수동 처리를 넘기는 경우에도 기존 실행과 수동 실행이 겹치지 않도록 해야 합니다. 자동 재시도 예약이 남아 있으면 담당자가 수동으로 처리한 뒤 자동화가 다시 실행될 수 있습니다. 수동 전환 전에 재시도 대기열을 중지하고 대상 결과를 대조하는 책임을 지정합니다.
한도 중단의 기록을 다음 조사에 쓰기
R-003의 한도중단은 업무가 끝났다는 성공 표시가 아닙니다. 시도별 시각, 오류 종류, 대상반영확인, 다음 담당을 남겨 조사할 수 있게 합니다. 같은 요청을 새 실행 ID로 옮겨 시도수를 0으로 리셋하면 총한도의 의미가 사라집니다. 새로운 실행을 허용할 때는 기존 기록과 승인 근거를 연결합니다.
한도가 자주 걸리면 숫자를 먼저 높이지 않습니다. 특정 시간대 부하인지, 원본 입력 오류인지, 권한이 바뀌었는지 살핍니다. 더 오래 기다리면 해결될 수 있는 장애와 계속 같은 오류가 나는 장애를 구분해야 합니다. 요청이 여러 계층에서 재시도될 때는 하나의 한도만 늘려도 전체 호출이 크게 증가할 수 있습니다.
되돌림이 가능한 범위와 재개 조건
대상에 일부만 반영됐다면 재시도보다 현재 상태를 확인하는 일이 먼저입니다. 업무표 한 칸은 원복할 수 있어도 이미 전송한 메시지나 예약 확정은 같은 방식으로 되돌릴 수 없습니다. 임의 삭제로 정리하기보다 실제 영향을 확인하고 해당 서비스의 취소·정정 절차를 검토합니다.
재개는 원인을 확인하고 입력·권한·대상 결과가 정리됐을 때만 허용합니다. 원인 미확인 상태에서 “이번에는 될 것”이라는 이유로 반복하지 않습니다. 이 CSV는 재시도 정책을 설명하고 조사 근거를 남기는 양식이며 시간 대기, 외부 요청 발송, 잠금과 오류 복구를 실제로 수행하는 프로그램은 아닙니다.
다음 실행을 예약한 뒤 업무 기한이 지나면 남은 시도수가 있어도 실행을 취소해야 할 수 있습니다. 예를 들어 안내문을 게시해야 할 시각이 09:00인데 대기 종료가 09:01이면 횟수 조건만으로는 실행을 허용하지 않습니다. 실제 적용에서는 최종 실행 가능 시각을 추가하고 한도와 기한 중 먼저 끝난 조건으로 중단 사유를 남깁니다.
상태를 바꾸는 조건
| 현재 상태 | 다음 상태 | 필요한 조건 | 조건이 없을 때 |
|---|---|---|---|
| 최초대기 | 실행중 | 필수값·대상·권한 확인 | 기준오류 보류 |
| 실행중 | 재시도대기 | 일시오류·미반영확인·한도미만 | 결과대조 또는 중단 |
| 재시도대기 | 실행중 | 대기종료·동일 키·정책 유지 | 대기열 중지 |
| 실행중 | 한도중단 | 시도수≥총한도·실패 | 추가 자동 실행 금지 |

작업표에 입력하는 순서
- 최초 실행을 포함한 총한도와 시도수 정의를 먼저 적습니다.
- 실행 ID·요청 키·각 결과 시각을 연결합니다.
- 오류가 일시적인지 입력·권한 문제인지 구분합니다.
- 대상 반영이 불명확하면 재시도 대신 결과를 대조합니다.
- 한도 미만의 허용된 재시도만 대기시간을 계산합니다.
- 한도 중단 후 원인을 조사하고 재개·수동 전환 근거를 남깁니다.
샘플 기록과 행별 해석
| 실행ID | 요청키 | 완료시도수 | 총한도 | 오류종류 | 대상반영확인 | 기본대기초 | 다음대기초 | 판정 | 다음행동 |
|---|---|---|---|---|---|---|---|---|---|
| R-001 | RK-01 | 1 | 3 | 일시연결오류 | 미반영확인 | 10 | 10 | 재시도대기 | 10초 후 동일키 |
| R-002 | RK-02 | 2 | 3 | 일시연결오류 | 미반영확인 | 10 | 20 | 재시도대기 | 20초 후 동일키 |
| R-003 | RK-03 | 3 | 3 | 일시연결오류 | 미반영확인 | 10 | 한도중단 | 원인 조사 | |
| R-004 | RK-04 | 1 | 3 | 권한오류 | 미반영확인 | 10 | 수동중단 | 권한 확인 | |
| R-005 | RK-05 | 1 | 3 | 시간초과 | 미확인 | 10 | 결과대조 | 대상 결과 조회 | |
| R-006 | RK-06 | 2 | 3 | 없음 | 반영확인 | 10 | 완료 | 결과 기록 | |
| R-007 | RK-07 | -1 | 3 | 일시연결오류 | 미반영확인 | 10 | 기준오류 | 시도수 수정 | |
| R-008 | RK-08 | 0 | 3 | 미실행 | 미실행 | 10 | 0 | 최초대기 | 첫 실행 확인 |
R-001 — 첫 실행이 실패했고 대상 미반영도 확인한 예시입니다. 총 세 번 중 한 번을 사용했으므로 10초 뒤 동일 키 재시도를 검토합니다. 단순 연결 오류라는 문구만 보고 반영 확인을 생략하지 않습니다.
R-002 — 두 번째 실행까지 실패했습니다. 남은 시도는 한 번이며 샘플 대기시간은 10×2=20초입니다. 다음 실행 후 또 실패하면 기다리는 시간을 늘려 네 번째를 시작하지 않고 한도중단으로 넘깁니다.
R-003 — 완료시도수와 총한도가 모두 3입니다. 한도중단으로 자동 실행을 멈추며 다음대기초는 비웁니다. 40초라는 계산값이 있더라도 네 번째 실행을 허용한다는 뜻이 아니므로 대기열에 넣지 않습니다.
R-004 — 권한 오류는 일시 연결 오류와 다릅니다. 권한을 점검할 담당에게 넘기고 반복 실행을 중지합니다. 시도 기회가 두 번 남아 있다는 사실만으로 같은 실패를 반복할 이유는 없습니다.
R-005 — 시간초과 뒤 대상 반영 여부를 모르는 경우입니다. 다음대기초를 정하기 전에 결과 조회가 필요합니다. 결과가 있으면 완료로 연결하고 없다는 근거가 충분할 때 지원 범위 안의 재시도를 검토합니다.
R-006 — 두 번째 실행에서 반영이 확인됐습니다. 완료 상태로 닫고 결과를 남기며 남은 실행 기회가 있다고 추가 실행하지 않습니다. 실패 시도 이력은 원인 분석을 위해 별도로 보존합니다.
R-007 — 시도수가 -1인 비정상 입력입니다. 대기 수식에 넣으면 작은 양수처럼 보일 수 있지만 기준오류가 우선입니다. 이력과 대조해 정정하고 임의로 0으로 잘라 최초 요청으로 만들지 않습니다.
R-008 — 아직 실행하지 않은 신규 기록입니다. 대기는 0이며 최초대기입니다. 이 행에 재시도 수식을 사용하면 첫 실행 전에 잘못된 지연이 생길 수 있으므로 최초 실행과 실패 후 실행을 구분합니다.
이 글의 기록 양식 내려받기
실패한 자동화를 무한 재시도하지 않는 횟수·중단 기록표 — CSV 양식
UTF-8 BOM이 있는 기록용 CSV입니다. 계산식·드롭다운·서식은 들어 있지 않습니다. 첫 행 10열, 설명용 데이터 8레코드가 있습니다.
모든 행은 가상 입력이며 실제 개인정보·성과 기록이 아닙니다.
CSV에 자동 차단·알림·권한 통제·실행 기능은 없습니다.
CSV 구조와 식별자 점검 도구에서 사본의 열 수와 문자열을 확인할 수 있습니다.
작업표 사용 범위
CSV는 열 이름과 샘플 값을 제공하는 기록 양식입니다. 상태 차단, 권한 확인, 알림, 자동 실행은 포함하지 않습니다. 파일을 가져온 도구에서 ID와 시각을 원문대로 보존하고, 담당자와 기준을 실제 업무에 맞게 바꿔야 합니다. 빈칸은 누락 여부를 확인하기 위한 입력이며 임의로 완료나 0으로 바꾸지 않습니다.
예상 결과를 대조할 입력
| 확인 항목 | 입력 | 예상 판정 | 판정 이유 |
|---|---|---|---|
| 첫 실패 | 시도1,총3,기본10초 | 재시도대기/10초 | 10×2^(1-1) |
| 둘째 실패 | 시도2,총3,기본10초 | 재시도대기/20초 | 10×2^(2-1) |
| 한도 경계 | 시도3,총3,일시오류 | 한도중단 | 총 시도 한도에 도달했다 |
| 불명확 결과 | 시간초과,반영미확인 | 결과대조 | 응답 실패와 대상 실패는 다르다 |
근거 자료와 적용 범위
공식 자료는 아래에 적힌 기능과 개념을 확인하는 데 사용했습니다. 업무 상태 이름, 담당 배정, 시간 기준과 샘플 숫자는 이 글에서 설계한 운영 예시입니다.
- AWS Retry with backoff pattern — 일시 오류와 재시도 간격을 다루는 설계를 참고합니다. 본문의 횟수와 대기시간은 독자가 바꿔야 할 샘플 정책입니다.
- Microsoft Azure Retry pattern — 재시도에 적합한 오류와 반복 실행의 부작용을 검토하는 패턴을 참고합니다. 본문에서 실제 서비스 장애를 재현했다는 의미는 아닙니다.