점검 가이드 · 개발
예약 발송·정기 결제가 한 건 실패로 전부 멈출 때 막는 법
2026-10-24 기준
세 줄 요약
- 정기 작업은 보통 여러 손님을 한 줄로 처리해서, 앞에서 한 건이 터지면 뒤가 모두 멈출 수 있습니다.
- 한 건씩 따로 감싸서 실패를 기록하고 넘어가게 하고, 같은 일을 두 번 하지 않게 표시를 남겨야 합니다.
- 실패를 알려 주는 장치가 없으면 손님이 항의할 때까지 모릅니다. 알림과 다시 돌리기 방법을 함께 만드세요.
어떤 일이 생기나요
매일 아침 9시에 예약 문자 100건을 보내는 기능이 있다고 해 봅시다. 3번째 손님의 전화번호가 비어 있어 오류가 나면, 많은 코드가 거기서 작업 전체를 끝내 버립니다. 나머지 97명은 문자를 못 받고, 화면에는 아무 표시도 없습니다.
정기 결제도 같습니다. 카드가 만료된 손님 한 명 때문에 그날 결제가 모두 빠지면, 매출이 비는 것은 물론이고 다음 날 한꺼번에 다시 돌리다가 두 번 결제되는 일까지 생길 수 있습니다.
왜 생기나요
- 여러 건을 한 반복문으로 처리하면서, 한 건의 오류가 전체 작업을 멈추게 짜여 있습니다.
- 외부 서비스(문자·결제사)가 늦게 답하면 작업 제한 시간이 지나 중간에 잘립니다. 서버리스 환경은 한 번 실행할 수 있는 시간이 정해져 있는 경우가 많습니다.
- "이미 처리함" 표시가 없어서, 다시 돌리면 앞에서 성공한 손님에게 또 보내거나 또 결제합니다.
- 실패해도 아무에게도 알리지 않아, 며칠 뒤에야 알게 됩니다.
막는 방법
- 한 건씩 따로 처리합니다. 한 손님에서 오류가 나면 그 손님만 "실패"로 기록하고 다음 손님으로 넘어가게 합니다.
- 처리한 건마다 상태(대기·성공·실패·결과 모름)를 데이터베이스에 남깁니다. 다시 돌릴 때는 "대기"와 "실패"만 고릅니다.
- 결제처럼 돈이 걸린 일은 주문번호 같은 고유 번호를 함께 보내, 같은 번호로 두 번 요청해도 한 번만 처리되게 합니다. 응답이 끊겨 결과를 모르면 실패로 적지 말고 그 번호로 결제사에 조회해 맞춥니다.
- 한 번에 너무 많이 하지 말고, 몇십 건씩 나눠 여러 번에 걸쳐 처리합니다.
- 작업이 끝나면 "성공 몇 건, 실패 몇 건"을 관리자에게 메일이나 메신저로 보냅니다. 실패가 있거나 작업이 아예 돌지 않았으면 꼭 알리게 합니다.
내 AI 에게 고쳐 달라고 하기
내 AI 에게 그대로 붙여 넣기이 프로젝트에서 정기적으로 도는 작업(크론, 예약 발송, 정기 결제 등)을 모두 찾아 줘. 각 작업에 대해 (1) 한 건이 오류 나면 나머지가 계속 처리되는지 (2) 다시 돌리면 이미 성공한 건을 또 처리하는지 (3) 실행 시간 제한에 걸릴 수 있는지 (4) 실패하면 누가 어떻게 아는지를 확인해 줘. 고칠 때는 한 건씩 오류를 따로 잡아 기록하고 넘어가게, 처리 상태를 저장해서 두 번 처리하지 않게 해 줘. 결제는 결과를 모를 때 실패로 적지 말고 주문번호로 조회하게 해 줘. 다른 기능은 바꾸지 마.
고친 뒤 확인하기
- 시험용 데이터에 일부러 잘못된 손님(빈 전화번호, 만료 카드)을 하나 섞고 작업을 돌려, 나머지가 모두 처리되는지 봅니다.
- 같은 작업을 바로 한 번 더 돌려, 성공한 손님에게 두 번 보내거나 결제되지 않는지 봅니다.
- 실패 알림이 실제로 오는지 확인합니다.
자주 묻는 질문
작업이 아예 안 돌았는지는 어떻게 알 수 있나요?
작업이 시작하고 끝날 때마다 시간을 기록해 두고, 정해진 시간에 기록이 없으면 알리게 만들면 됩니다. 별도의 감시 서비스(정해진 시간에 신호가 안 오면 알려 주는 도구)를 쓰는 방법도 있습니다.
실패한 건은 자동으로 다시 시도해도 되나요?
문자처럼 한 번 더 가도 큰일이 아닌 것은 몇 번까지 다시 시도해도 됩니다. 결제는 같은 주문번호로만 다시 요청하고, 결과를 모를 때는 먼저 조회해야 두 번 결제되지 않습니다.
내 코드에 이런 문제가 있는지, AI 세 개가 따로 봐 드려요.
삼심은 Claude·GPT·Gemini 가 서로 모르게 점검하고 지적을 교차 확인해, 개발부터 법률까지 8개 분야의 고칠 순서와 수정 지시문을 드립니다.
함께 보면 좋은 글
이 글은 일반적인 정보이며 법률·보안 자문이 아닙니다. 서비스마다 상황이 다르니 고치기 전에 확인하세요.