예약재고 관리 시스템 개발: 미결제 주문의 점유와 해제를 검수하는 법
예약재고 관리 시스템 개발에서 미결제 주문의 임시 점유, 결제 확정, 만료와 부분 해제를 구분합니다. 결제 알림과 만료 처리가 동시에 도착하는 가상 사건표를 살펴보고, 재고 원장 책임, 해제 실패 재처리, 중복 요청, ERP 설정과 통합 개발의 비교 및 인수 기준을 확인하세요.
이 글을 쓴 알파카랩스카카오·네이버·쿠팡 출신, 재하청 0%, 대기업·공공기관 등 18개사+ 레퍼런스
예약재고 관리 시스템 개발은 주문이 잠시 점유한 수량을 언제 확정하고 언제 돌려줄지 정하는 일입니다. 임시 점유·확정·만료·해제를 나누고 결제 확인과 만료가 경합해도 같은 수량을 두 번 풀지 않는 판정이 필요합니다. 예약 만료 시간이 지났다는 화면 표시만으로 가용 수량이 복구됐다고 보지 말고 원장 반영 결과까지 확인하세요.
마지막 상품을 결제하던 고객의 예약이 만료되는 순간 결제 알림이 도착할 수 있습니다. 주문 화면에서는 결제가 끝났고 재고 화면에서는 상품이 풀렸다면 다음 주문까지 같은 수량을 약속하게 됩니다. 어느 알림을 먼저 받았는지만으로 결정하면 통신 지연에 따라 결과가 달라질 수 있습니다. 발주자는 결제 인정 시점, 예약의 유효 경계, 만료 후 결제 처리와 재점유 허용 여부를 업무 규칙으로 정하고 개발자가 그 판단을 한 번만 반영하도록 요구해야 합니다.
예약재고는 물리적으로 창고에서 나간 수량과 다릅니다. 미결제 주문이 임시로 확보한 수량, 결제 후 출고에 배정한 수량, 창고에서 실제 소비한 수량이 같은 단계인지부터 확인하세요. 판매 채널마다 별도 점유를 관리하면서 ERP에서도 다시 차감하면 가용량이 이중으로 줄 수 있습니다. 통합 조회 화면이 있어도 실제 예약을 승인하는 원장이 여러 개라면 마지막 수량의 경합은 남습니다. 수량을 약속할 최종 책임 시스템과 각 단계의 반영 시점을 정해야 합니다.
아래 사건과 시간, 수량은 모두 가상 정책을 검수하기 위한 예시입니다. 결제 후 주문을 자동 취소하거나 고객에게 환불하는 기능을 전제하지 않으며, 재고 확보 실패 뒤 고객에게 안내할 절차도 회사가 정합니다. 특정 ERP의 예약 기능을 설정하는 방법과 회사 고유의 시간제한 점유를 개발하는 범위를 구별하세요. 대시보드의 재고 조회 실적을 결제·예약 실행이나 실시간 동기화의 수행 증거로 확대하지 않습니다.
기존 예약 기능과 채널 점유를 먼저 대조한다#
예약 기능이 있다는 답변만으로 통합 개발을 시작하지 마세요. 어느 시스템이 예약번호를 만들고 판매 가능 수량을 판단하는지, 다른 채널이 그 판단을 우회할 수 있는지 확인합니다. 기존 ERP에 필요한 상태와 취소 경로가 있다면 설정 검증으로 범위를 줄일 수 있습니다. 채널별로 점유하는 방식을 유지할 때는 배정 한도와 되돌림 규칙이 필요합니다. 통합 원장을 따로 두면 경합을 한곳에서 판정할 수 있지만 ERP의 실제 소비와 상계하는 책임, 장애 시 주문 접수 정책까지 맡아야 합니다.
| 대안 | 맞는 조건 | 확인할 책임 | 검수 과제 |
|---|---|---|---|
| ERP 기능 설정 | 주문 경로가 ERP에 모임 | 예약·취소 설정과 권한 | 취소 재전송 뒤 수량 유지 |
| 채널별 점유 유지 | 채널 한도를 분리해 운영 | 한도 회수·채널 간 재배정 | 한도 초과 요청 보류 |
| 통합 예약 원장 | 여러 주문 경로가 같은 수량 경쟁 | 단일 판정·물리 소비 상계 | 동시 두 요청 중 허용량만 성공 |
| 조회만 통합 | 실행 원장은 기존 시스템 | 조회 지연·원장 불일치 표시 | 오래된 조회값으로 확답 금지 |
결제와 만료가 만나는 경계의 최종 판정을 고정한다#
가상 정책은 서버가 인정한 결제 확인이 예약 유효 시간 안에 확정 전이를 얻은 경우에만 기존 점유를 확정한다고 정합니다. 물리재고 10개 중 예약 R-7이 3개를 점유했다면 가용량은 7개입니다. 확정이 먼저면 점유 3개가 확정 배정으로 바뀌어 가용량은 7개를 유지합니다. 만료가 먼저면 3개가 풀려 10개가 되고 늦은 결제는 재점유 가능 여부를 별도 확인합니다. 두 경로를 모두 성공 처리하지 않는 것이 핵심이며 이 우선순위는 실제 회사가 바꿀 수 있는 설계 선택입니다.
| 가상 사건 | 허용 전이 | 가용량 결과 | 후속 처리 |
|---|---|---|---|
| R-7 임시 점유 3개 | 없음→임시 점유 | 10→7 | 만료 시각·버전 저장 |
| 유효 중 결제 확정 성공 | 임시 점유→확정 배정 | 7 유지 | 만료 작업은 변경 없음 |
| 만료 판정이 먼저 성공 | 임시 점유→만료·해제 | 7→10 | 늦은 결제는 예외 대기 |
| 만료 뒤 결제 알림 | 만료→확정 직접 전이 금지 | 10 또는 새 예약 결과 | 새 재고 확인·고객 안내 |
| 같은 만료 요청 재도착 | 해제 완료→변경 없음 | 10 유지 | 기존 해제 결과 반환 |
부분 해제와 실패 복구도 수량 보존으로 검수한다#
예약 3개 중 1개만 취소하면 남은 점유는 2개여야 합니다. 이후 전체 취소 요청이 오더라도 최초 예약량 3개를 다시 풀면 안 됩니다. 해제할 잔량과 이미 확정되거나 소비된 수량을 현재 원장에서 계산하고 취소 요청의 대상 버전을 검사합니다. 해제 명령을 보냈다는 사실과 원장에 반영됐다는 결과도 다릅니다. 응답 유실 때 같은 의도의 재시도가 수량을 다시 늘리지 않는지, 운영자가 처리 불명 건을 조회해 해결할 수 있는지 계약 검수표에 넣으세요.
| 인수 사건 | 기대 수량·상태 | 금지할 결과 | 증거 |
|---|---|---|---|
| 3개 중 1개 부분 해제 | 점유 2개·해제 1개 | 잔량까지 전부 해제 | 예약별 수량 분해 |
| 이후 전체 취소 | 남은 2개만 해제 | 원래 3개 재해제 | 누적 해제 3개 |
| 해제 반영 후 응답 유실 | 재시도는 기존 성공 반환 | 가용량 추가 증가 | 명령 식별자·원장 결과 |
| 소비 완료 예약의 만료 | 수량 변경 없음 | 소비분 가용재고 복원 | 소비 상계 연결 |
| 다른 채널 예약 취소 요청 | 권한 거부 | 번호만 알면 취소 | 서버 권한 거부 기록 |
soft reservation과 물리재고 분리는 제품별로 확인한다#
2026년 11월 3일 Microsoft 공식 본문을 확인했습니다. Inventory Visibility 문서는 soft reservation이 생겨도 ERP 물리재고가 그대로일 수 있으며 실제 소비와의 상계를 설명합니다. 다른 예약 안내는 수동·자동 예약과 일부 취소를 다룹니다. 아래 시간제한·경합 판정·재처리 표는 그 문서의 기본 기능을 옮긴 것이 아니라 발주용 설계 제안입니다. 사용 제품의 버전과 설정을 직접 확인해야 합니다.
- Microsoft Inventory Visibility 예약: soft reservation과 물리재고, 소비 시 상계의 제품 사례. 시간제한 정책 전체를 보증하지 않음.
- Microsoft 재고 수량 예약 안내: 예약 방식과 일부 취소의 설명. 회사별 결제 인정·만료 정책은 별도 결정.
예약 원장과 주문·결제·창고의 경계를 운영한다#
예약 연장은 주문을 새로 고치는 편의 기능으로 숨기지 않습니다. 고객 재시도나 상담원 요청이 들어왔을 때 연장 가능한 상태와 최대 범위를 회사가 정하고, 연장 승인과 새 유효 시각을 남깁니다. 과거 만료 작업이 이미 읽어 간 예약을 뒤늦게 해제하지 않도록 바뀐 버전을 다시 검사하세요. 연장에 실패하면 기존 기한이 유지되는지 즉시 알리고 성공하지 않은 연장을 고객 화면에 확정 문구로 보여주지 않습니다.
예약 식별자는 주문번호만으로 대체하지 않습니다. 한 주문이 여러 품목을 갖거나 만료 후 다시 시도할 수 있으므로 예약번호, 주문 행, 품목·창고·로트 등 적용 차원, 수량 단위, 상태, 유효 시각과 버전을 남깁니다. 같은 주문의 새 시도가 옛 만료 작업에 해제되지 않도록 예약의 세대를 구분하세요. 만료를 연장한다면 단순 날짜 수정으로 끝내지 말고 누가 어떤 근거로 연장했는지, 이미 시작한 만료 작업이 어떤 버전을 확인할지까지 정합니다.
결제 채널에서 보내는 시각, 우리 서버의 수신 시각, 상태 변경을 확정한 시각은 서로 다를 수 있습니다. 무엇을 유효 결제의 기준으로 삼을지 회사가 선택하고 검수 표본에 세 시각을 함께 기록합니다. 서버의 기준 시간대를 문서와 화면에서 일치시키고 기한과 정확히 같은 시각의 요청도 정의하세요. 만료 작업이 늦게 실행됐다고 만료 기한이 자동 연장되는지 역시 별도 정책입니다. 배치 실행 시각 하나에 모든 업무 의미를 맡기지 않습니다.
주문 서비스가 예약 생성 요청을 보냈다가 응답을 받지 못하면 접수 여부가 불명확합니다. 이때 새 예약번호로 다시 요청하면 같은 주문이 두 번 점유할 수 있습니다. 동일 요청을 식별하는 값으로 기존 결과를 조회하거나 같은 결과로 수렴하도록 설계합니다. 예약 생성 실패와 응답 유실을 다른 오류로 보여주고, 운영자는 주문 행과 예약 행의 대응을 찾아야 합니다. 화면의 결제 재시도 버튼이 예약을 매번 추가하는지 의도적으로 반복 눌러 확인하세요.
만료 대상 목록을 읽은 뒤 실제 해제하기 전에도 결제가 확정될 수 있습니다. 목록을 읽을 때의 상태를 믿고 일괄 차감하지 말고 각 예약의 현재 상태와 버전이 아직 해제 조건인지 최종 반영 시점에 검사해야 합니다. 확정된 예약을 만료 작업이 발견하면 변경 없음으로 기록합니다. 이미 풀린 예약을 다시 발견해도 같은 결과를 남깁니다. 처리 건수와 실제 해제 수량을 나누어 집계하면 재시도 때문에 업무 성과가 부풀거나 누락되는 일을 확인하기 쉽습니다.
재고 원장에 해제를 적용하지 못한 예약은 실패 대기 목록에 둡니다. 주문 화면에는 만료라고 표시되더라도 가용량 복원이 완료됐는지 별도 상태로 보여줘야 합니다. 실패 원인이 권한, 잘못된 품목 차원, 원장 장애 중 무엇인지 구분하고 재시도 담당과 중단 조건을 정하세요. 사람이 숫자를 직접 늘려 해결하면 뒤늦은 자동 재시도에서 다시 늘어날 수 있으므로 수동 복구도 원래 예약과 명령에 연결합니다. 수정량은 기록하고 과거 결과를 지우지 않습니다.
창고의 실제 출고가 반영될 때는 확정 배정의 소비와 물리재고 감소를 연결합니다. 같은 수량이 예약으로 한 번, 물리 감소로 또 한 번 가용량에서 차감되지 않는지 대사하세요. 반대로 소비됐다는 이유로 점유를 풀기만 하고 물리 감소가 반영되지 않으면 판매 가능 수량이 과하게 늘어납니다. 조회 화면은 마지막 동기화 시각과 처리 중 차이를 보여줄 수 있어야 합니다. 장애 중 새 주문을 제한할지 한도를 줄여 접수할지는 운영 책임자가 승인할 판단입니다.
상태 순서를 바꾼 사건 재생으로 인수한다#
동일한 가상 표본을 결제 우선, 만료 우선, 두 요청 동시, 중복 알림 순서로 각각 실행합니다. 각 실행에서 최종 예약 상태 하나와 수량 분해를 확인하고, 중간 응답이 다르더라도 최종 결과가 승인 정책을 지키는지 비교하세요. 임시 점유 수량은 확정 전환량·해제량·잔여 점유량으로 설명돼야 하며 한 수량이 두 칸에 중복 들어가면 통과시키지 않습니다. 원개발자의 구두 설명 없이 운영자가 최종 판정 이유를 찾을 수 있어야 합니다.
가상 물리재고 10개와 임시 점유 3개로 시작해 1개 부분 해제 후 남은 2개를 해제하는 표본을 실행합니다. 그동안 다른 사건이 없다면 가용량은 7, 8, 10으로 돌아갑니다. 각 해제 요청을 다시 보내도 마지막 10을 넘지 않는지 확인하세요. 확정 배정으로 바뀐 뒤의 취소는 창고 처리 상태에 따른 별도 절차로 보냅니다. 이 산술 예시는 단일 품목·동일 단위·동일 재고 차원의 검수일 뿐 실제 모든 재고 계산식을 대신하지 않습니다.
장애 검수에는 예약 생성 응답 유실, 해제 응답 유실, 만료 작업 중단, ERP 소비 반영 지연을 포함합니다. 복구 뒤 주문·예약·물리재고의 연결이 맞는지 보고 재처리 전후 수량을 내려받아 비교하세요. 재시도 횟수를 초기화하거나 실패 행을 지워 대기 목록을 비우는 방식은 인수하지 않습니다. 권한이 없는 채널과 읽기 전용 운영자가 다른 예약을 해제할 수 없는지도 확인하고 관리자 수동 조정은 사유와 승인자를 남깁니다.
최종 산출물로 상태 전이표, 결제 인정 정책, 예약 데이터 사전, 만료 대상 선정 조건, 재처리 절차, 일별 불일치 목록을 받습니다. 유효 시각이나 예약 단위를 바꾸면 어떤 표본을 다시 실행할지 운영자가 설명하게 하세요. 기존 ERP 설정만으로 끝나는 구간과 새 실행 기능을 개발하는 구간은 견적에서도 나눕니다. 공개 서비스의 조회·비교 안내가 예약 해제 기능의 납품 증거는 아니므로 실행 기능은 별도 시연·검수·지원 책임으로 확인합니다.
채널 전체의 재고 경계는 다채널 재고 연동 설계에서 확인하세요. 출고 이후 수량은 반품·부분출하 ERP 검수로 구분해 살펴봅니다.
예약재고 관리에 관한 질문#
예약재고와 창고 물리재고는 같은 값인가요?
같은 값으로 보지 않습니다. 주문의 임시 점유는 판매 가능한 수량을 제한하지만 물건이 창고에서 나갔다는 뜻은 아닙니다. 실제 소비와 예약 상계가 어떻게 연결되는지 원장별로 확인하세요.
미결제 주문은 몇 분 뒤 해제해야 하나요?
모든 회사에 같은 시간이 맞지는 않습니다. 상품 특성, 결제 방식, 고객 안내와 운영 조건에 따라 정하고 연장 권한과 정확한 시간 경계도 함께 합의합니다. 본문의 시나리오는 가상 검수 정책입니다.
결제 확인과 만료가 동시에 도착하면 어떻게 하나요?
어느 조건이 최종 상태 변경을 얻는지 사전에 정합니다. 확정과 해제가 모두 성공하지 않도록 현재 상태·버전을 검사하고 늦은 결제는 별도 재고 확인과 고객 안내 절차로 보낼 수 있습니다.
예약 일부만 취소할 수 있나요?
업무에 필요하면 부분 해제를 요구할 수 있습니다. 최초 예약량과 누적 해제·확정·소비·잔량을 구분하고 다음 전체 취소가 남은 수량만 해제하는지 검수하세요.
해제 요청이 시간초과되면 다시 실행해도 되나요?
먼저 원장에 이미 반영됐는지 확인합니다. 같은 명령의 재시도가 가용량을 다시 늘리지 않아야 하며 처리 불명 상태와 복구 이력을 운영자가 조회할 수 있어야 합니다.
재고 대시보드만 구축하면 예약 충돌도 해결되나요?
조회 화면만으로 실행 원장의 경합이 해결되지는 않습니다. 예약 승인 주체, 채널별 우회 여부, 실제 소비와의 상계, 장애 시 주문 정책을 별도로 설계하고 실행 기능의 증거를 확인해야 합니다.