2019년 추수감사절 다음 화요일. 나는 캘리포니아 온타리오의 3PL 창고 메자닌에 서서, 수퍼바이저가 물어뜯길까 봐 겁내는 것처럼 인쇄된 피킹 웨이브를 움켜쥐고 있는 걸 보고 있었다. 빈에 남은 히어로 SKU는 1,400개. 미처리 주문은 2,300개가 필요했다. 계산이 안 맞았다. 현장의 모두가 알고 있었다.

「그래서 누구를 끊지?」 그가 나에게 물었다.

이 질문 — 정확히 이 조용한 패닉의 말투로 — 내가 일한 모든 창고에서 나왔다. 그리고 솔직히 말해 대부분의 현장에는 진짜 답이 없다. 기본값은 선입선출(FIFO)이다. 먼저 들어온 주문이 채워지고, 나중에 들어온 주문이 끊긴다. 공정해 보인다. 하지만 이것은 품절을 처리하는 가장 비싼 방법이기도 하며, 나는 이걸로 한 분기에 여섯 자리 손실을 본 기업들을 봐 왔다.

FIFO가 공정해 보이는 건, 주문에 대해서는 진짜로 공정하기 때문이다. 하지만 당신이 운영하는 건 공정성 사업이 아니다. 손익(P&L) 사업이다.

실제로 재고를 누구에게 줄지 결정하는 5가지 요소

창고의 OMS에 할당 규칙을 설계하도록 도울 때, 나는 미처리 주문 하나하나를 다섯 가지 기준으로 순위를 매기게 한다. 세 개도 아니고 열 개도 아니다. 다섯 개다. 실무에서 가중치 순서는 이렇게 되고, 순서가 중요하다:

1. 못 지키면 물리는 계약상 페널티. 이게 제일 아프다. 일부 도매 거래처는 납기 지연에 송장 금액의 5–10%를 물리고, 대형 유통 EDI 프로그램 중에는 그 이상인 곳도 있다. 마켓플레이스 주문은 여기서 한결 부드럽다 — 납기 지연은 셀러 지표를 갉아먹지만 직접 청구하진 않는다. OMS는 채널별로 「납기를 못 지키면 실제로 달러로 얼마가 나가는지」를 알고 있어야 한다.

2. 소비자와의 납기 약속. 이틀 배송으로 판 주문이 표준 5~7일로 판 주문보다 위험하다. 이틀 배송 주문을 끊으면 매출만 잃는 게 아니다 — 고객이 돈을 내고 산 약속을 깨는 거다. 충분히 많이 깨면 계정 단위 지표가 미끄러지고, 바이박스나 검색 노출이 몇 주 동안 조여질 수 있다. 주문 한 건 잃는 것과는 비교도 안 되는 보이지 않는 피해다.

3. 고객 등급. VIP와 단골은 목록이 아니라 포트폴리오다. 40달러짜리 주문의 일회성 손님을 잃는 건 한 번 아프다. 올해 30번 주문한 손님을 품절시키면 앞으로 서른 번 더 아프다. OMS는 상위 10% 고객에 플래그를 달고 보호해야 한다 — 대부분의 시스템은 간단한 세그먼트 규칙으로 할 수 있다.

4. 주문 마진. 주문을 끊어야 한다면 싼 걸 끊어라. 차갑게 들리는 건 알지만, 마진 200달러짜리 주문과 20달러짜리 주문은 사업 입장에서 도덕적으로 동등하지 않다. 20달러짜리를 살리고 200달러짜리를 끊었다면 잘못된 고객을 기쁘게 한 거다.

5. 주문의 나이. FIFO는 1번 요소가 아니다. 5번 요소 — 동점자 처리용이다. 앞의 네 개가 대충 비슷할 때만 써라. 왜 이걸 맨 앞에 두면 함정인지 아래에서 설명한다.

실무 팁: 이걸 막연한 가이드가 아니라 OMS 할당 엔진의 명시적 가중치로 설정해라. 예를 들어 페널티 비용 35%, 납기 약속 25%, 고객 등급 20%, 마진 15%, 주문 나이 5% 같은 식이다. 정확한 숫자는 채널 믹스에 따라 다르다 — 한 번 튜닝하고 나면 위기 한복판에서는 건드리지 마라.

끊기 전에 아무도 계산하지 않는 숫자

2019년 시즌의 실제 트레이드오프를 하나 보여주겠다. 익명화했지만 숫자는 진짜다.

주문 A: 소매 체인의 보충 주문, 800개, 송장 64,000달러. 계약에 납기 지연 차지백 8% — 5,120달러 — 가 있었고, 이 바이어는 예전에 결제 조건을 후려친 적이 있어서 딱히 친구는 아니었다. 주문 마진: 얇게, 약 3,200달러.

주문 B: Amazon과 자사몰 개인 주문용 900개, 매출 약 58,000달러. 직접 차지백은 없지만 이틀 배송이 약속되어 있었다. 마진: 약 11,000달러. 그리고 단골들이었다 — 우리 데이터상 약 40%가 90일 안에 다시 샀다.

FIFO는 이렇게 말했다: A를 먼저 채워라(먼저 왔으니까), 남은 600개를 B에 주고, 나머지 고객들에게는 「죄송합니다, 곧 입고됩니다」라고 말해라.

우리는 그렇게 하지 않았다. A를 통째로 끊었다 — 5,120달러 차지백을 물고 — B를 완전히 채웠다. 내가 GM에게 들이댄 논리는 이렇다: 차지백은 알려져 있고 상한이 있는 비용이었다. 900명의 직판 고객과의 이틀 배송 약속을 깨는 비용은 알려지지 않았고 상한도 없었다. 그 중 5%만 다시 안 돌아와도, 우리 평균 객단가와 재구매율로 평생 가치에서 20,000달러 이상을 날리는 거였다. 게다가 마진은 B가 세 배가 넘었다.

창고는 5,120달러를 내고 20,000~31,000달러를 지켰다. 이런 계산이야말로 OMS가 아침 6시에 자동으로 하길 바라는 것이지, 인쇄된 웨이브를 든 수퍼바이저와 저녁 6시에 옥신각신하고 싶은 게 아니다.

여기서 주의할 점 두 가지. 첫째, 차지백 조건과 플랫폼 납기 지연 페널티는 바뀐다 — 작년 숫자 믿지 말고 반드시 고객이나 플랫폼의 최신 공지 정책을 확인해라. 둘째, 이 계산은 마진과 재구매율 데이터가 실제로 OMS 안에 있다는 전제다. 누가 쓰는 스프레드시트에 있다면, 당신에겐 할당 시스템이 있는 게 아니라 일어나길 기다리는 싸움이 있는 거다.

창고들이 망치는 세 가지 방법

기본 규칙으로서의 FIFO. 왜 틀렸는지는 설명했지만, 사람들 머릿속에 남는 버전으로 말하면: FIFO가 최적화하는 건 주문 나이이고, 주문 나이는 중요한 것 — 마진도, 고객 가치도, 페널티 리스크도 — 그 어느 것과도 상관없는 유일한 요소다. 밤 11시에 들어온 거대한 도매 주문은 아침 8시에 들어온 1개짜리 주문에게 항상 진다. 이건 공정함이 아니라, 정중한 얼굴의 자해야. FIFO는 동점자 처리용으로만 남겨라.

조용히 빌려 쓰는 안전 재고. 이건 내가 직접 데인 함정이다. 2021년의 한 사업장에서 멋진 할당 규칙을 만들어 놓고 나니, 수퍼바이저들이 가벼운 품절 때마다 VIP 주문 채우려고 안전 재고에서 「일시적으로」 빌려 가기 시작했다. 진짜 품절이 왔을 때 안전 재고는 허구였다. 규칙은 「VIP용으로 5% 확보」라고 했지만 선반은 딴말을 했다. 교훈: 안전 재고는 OMS 레벨에서 잠그고 예외 권한은 명시적으로 — 한 사람만, 로그 기록, 타임스탬프. 빌려 가는 게 안 보이면 매일 일어난다.

포장 작업장에서 출고 상자를 분류하는 창고 작업자

위기 때의 수동 오버라이드. 품절이 터질 때마다 패닉에 빠진 VP가 현장에 전화해서 「이거 먼저 채워, 중요해」라고 한다. 한 번의 오버라이드로는 시스템이 안 깨진다. 하지만 내 경험상, 규칙이 깨지는 걸 본 팀은 규칙을 안 믿게 된다 — 그러면 다음 분기부터 품절 처리는 목소리 큰 사람이 다 한다. 내 규칙: 오버라이드는 허용한다. 하지만 반드시 사유 코드와 함께 OMS에 입력하고, 할당 리포트는 다음 날 아침 리뷰한다. 오버라이드 비율이 품절 물량의 10%를 넘으면 규칙이 깨진 거니 다시 설계해라 — 작업자를 탓하지 마라.

실전 투입 전: 체크리스트

할당 규칙을 실전에 올릴 때 나는 이 리스트를 돈다. 하나라도 No면 켜지 않는다:

  • OMS의 모든 채널에 납기 지연 페널티 또는 차지백 비율이 문서화되어 있고, 마지막 확인 날짜가 기록되어 있다
  • 납기 약속(이틀 vs. 표준 vs. 이코노미)이 모든 주문의 필드로 있고, 할당 실행 전에 채워져 있다
  • 고객 등급 세그먼트가 OMS에 있고 최소 주 1회 갱신된다
  • 주문별 마진이 자동 계산된다 — 루프 안에 스프레드시트는 없다
  • 할당이 고정 스케줄로 돈다(예: 매 웨이브, 또는 두 시간마다) 모든 결정을 규칙 버전과 함께 로그에 남긴다
  • 안전 재고 예약이 시스템에서 강제되고, 예외는 지정된 한 사람으로 제한·기록된다
  • 품절 알림 기준선이 있다 — 1,400 대 2,300이 된 후가 아니라 되기 전에 OMS가 경고한다
  • 히스토리 데이터로 드라이런 한 번: 지난 분기 품절일들을 리플레이해서 규칙이었다면 어땠을지와 실제 대응을 비교한다

마지막 이게 가장 값진 한 시간이다. 2022년에 한 고객사에서 했을 때, 리플레이 결과 규칙이 피크 한 주만에 약 90,000달러를 아낄 수 있었다는 게 나왔다. GM은 그 뒤로 질문을 그만뒀다.

내일 아침

당신 OMS에 오늘 할당 규칙이 없다면, 이번 주 안에 다섯 가지 요소를 다 만들려고 하지 마라. 하나만 해라: 지난달 주문을 뽑아서, 품절 난 것들에 플래그를 달고, 주문별 마진으로 정렬해봐라. 저마진 주문은 몇 건이 채워지고 고마진 주문은 몇 건이 끊겼는지 봐라. 그 숫자 — 얼마가 됐든 — 가 FIFO가 당신에게 물린 비용이다. 그게 남는 장사였는지 결정해라.

선반은 또 빈다. 언제나 그렇다. 문제는 아침 6시에 시스템이 누굴 끊을지 정하느냐 — 아니면 저녁 6시에 당신이 패닉에 빠져 정하느냐, 그것뿐이다.

영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.