OMS·WMS·재고 정합성 — 이벤트 순서와 보정 배치

커머스

OMSWMS재고

이 글은 누구를 위한 것인가

재고 숫자가 사이트·창고·엑셀에서 각각 다르게 보이는 문제를 겪은 분, 혹은 OMS·WMS·이커머스를 처음 맡은 분을 위한 글입니다. 용어만 알아도 “왜 숫자가 안 맞지?” 대화가 짧아집니다.

한 줄 요약

재고 숫자는 한 곳만 진실이어야 하고, 나머지는 그 진실에서 파생된 읽기 모델이어야 합니다. 여러 시스템이 각자 “진실”이라고 주장하면, 현장에서는 항상 엑셀이 승리합니다.

이벤트 순서

OrderPlaced, Allocated, Shipped, Returned 순서가 뒤바뀌면 보정 로직이 필요합니다. 메시지 큐에서는 파티션 키를 주문 ID로 고정하는 편이 안전합니다. 배송 지연·부분 출고처럼 현실이 복잡해질수록, 이벤트 순서를 어떻게 정의할지 먼저 합의해야 합니다.

OMS와 WMS 경계

OMS가 ‘팔 수 있는 수량’을, WMS가 ‘창고에 있는 수량’을 본다면, 동기화 지연 구간에는 예약 재고 같은 중간 상태가 필요합니다. 고객이 보는 “남은 수량”과 창고 직원이 보는 “피킹 가능 수량”이 잠깐 달라질 수 있다는 점을 정상 시나리오로 문서화해 두세요.

보정 배치

실시간이 어긋날 때를 대비해 야간에 스냅샷을 비교하고, 차이는 수동 큐로 넘깁니다. 자동 덮어쓰기는 데이터 손실로 이어질 수 있습니다. 보정은 “버그를 숨기는 것”이 아니라, 원인을 남기는 것입니다.

일반인에게 왜 중요한가

소비자 입장에서는 “품절인데 왜 주문됐지?” 한 번이면 신뢰가 흔들립니다. 그 뒤에는 재고 동기화·전시 캐시·옵션 매핑이 얽혀 있습니다. CS가 같은 스크립트로 설명하려면, 내부적으로도 같은 숫자의 출처가 있어야 합니다.

맺으며

카탈로그 옵션·번들이 바뀔 때마다 SKU 매핑 테이블을 함께 갱신하지 않으면 대사가 무너집니다. 변경 관리가 핵심입니다.