남은 유통기한 45일. 시스템은 한 번도 알림을 울리지 않았고, 영업팀 누구도 시계가 돌아가고 있다는 걸 몰랐다. 고객사 자체 창고가 사이클 카운트 중에 마침내 잡아냈을 때 돌아온 건 팔레트 통째 — 주스 음료 800케이스, 그대로 폐기 처분이었다. 책임자는 얼굴이 파래져서 계산했다: 상품 가치로 40,000달러가 넘고, 반품 운임까지 물어야 했다. 2019년 샌버너디노의 냉장·냉동 3PL, 120,000평방피트 규모의 시설에서 일어난 일이다. 작은 창고가 아니다. 사후 분석이 가장 아팠다. 로트 번호는 입고 때 깨끗하게 기록돼 있었다. 유통기한 항목도 다 있었다. 그 항목들을 살아 있는 관리 프로세스에 연결한 사람이 아무도 없었다.

이 업계 식품 창고 쪽에서 10년 가까이 일하며 이 장면을 너무 많이 봤다: 시스템에는 원하는 항목이 다 있는데, 현장은 여전히 감으로 출고한다. 로트·유통기한 관리는 "관리의 문제"처럼 들린다. 실제로는 "실행의 문제"다. 효과가 있는 걸 본 방법과, 순전히 장식인 것을 소개한다.

FEFO는 정렬 버튼이 아니다 — 입고와 출고의 철칙이다

많은 사람이 FEFO를 WMS의 "유통기한 순으로 피킹을 정렬하는 버튼"으로 생각한다. 식품 DC를 실제로 운영해 본 사람은 안다, 어려운 건 알고리즘이 아니다. 입고 도크와 피킹 페이스다.

먼저 입고. 트럭이 들어오면 로트와 유통기한은 도크에서 그 자리에서 기록해야 한다. 하나의 SKU가 3개의 로트, 3개의 서로 다른 유통기한으로 들어오는 건 흔한 일이다 — 팔레트 분리, 적재 분리. 같은 SKU의 서로 다른 로트를 하나의 로케이션에 섞어 넣고 SKU 라벨 하나만 붙여서 대충 처리한 창고를 본 적이 있다. 3개월 뒤 고객이 허용하는 것보다 제조일이 2주 더 오래된 상품을 출고해 버렸고, 주문 전체에 차지백이 걸렸다. 교훈은 냉정하다: 로트는 재고 관리의 최소 단위이지 메모 항목이 아니다. 입고 때 팔레트를 나누고 로트 라벨을 인쇄하는 데 10분이 더 든다. 나중에 주문 전체를 살린다.

다음은 출고. 거의 모든 WMS가 유통기한 순 피킹 순서를 추천할 수 있지만, 피커가 실제로 따르는지는 별개의 문제다. 피커의 본능은 손닿는 것, 가까운 것, 깨끗한 풀 팔레트를 집는 것이다. FEFO를 정착시키려면 3가지가 필요하다: 검수 스테이션에서 스캔하고, 추천 순서와 맞지 않는 로트는 시스템이 강하게 차단한다; 성과급은 케이스 수만 기준으로 할 수 없다 — 로트 오피킹 재작업과 차지백은 개인에게 돌아가야 한다; 그리고 매달 출고된 주문을 샘플링해 사후에 로트 준수 여부를 확인한다. 내가 함께 일한 냉동식품 유통사는 준수율을 70%에서 98%로 올리는 데 꼬박 2분기가 걸렸고, 그 모든 것은 "강력 차단 + 책임 명확화 + 스폿 체크"였다. 그중 어느 것도 기술 자체의 이야기가 아니었다.

또 하나의 함정: 고객 반품. 반품된 로트는 가용 재고로 돌아가기 전에 재검사와 재라벨링이 필수다 — 절대 그냥 섞어서 돌려보내지 마라. 반품 팔레트가 그대로 피킹 페이스로 굴러 들어갔다가, 2주 뒤 유통기한이 겨우 3주 남은 채 다른 고객에게 출고돼 출고 감사에서 처음 발견된 걸 본 적이 있다. 반품은 격리된 검사 구역에 새 라벨로. 협상 불가다.

경고 단계는 감으로 정하지 마라: 유통기한 길이에 따라 등급을 나눠라

유통기한 임박 알림에서 가장 흔한 실수는 일률적인 기준이다 — 예를 들어 남은 60일짜리는 전부 알림. 유통기한 18개월인 통조림에게 60일 전은 아무것도 아니다. 유통기한 45일인 우유에게 60일은 불가능하다. 경고 단계는 남은 유통기한 비율로 등급을 나눠야 한다. 내가 주장하는 접근법이다.

예시(샘플 수치 — 고객 계약 내용을 따를 것): 유통기한 12개월 이상인 상품은 남은 90일에 "주의" 리스트 등재, 영업팀 주간 보고 첨부; 30일에 "경고", 영업은 처분 계획 — 할인, 이관, 폐기 — 를 제시해야 한다; 10일에 출고 완전 동결, 해제는 특별 승인 필요. 유통기한 6개월 미만인 상품은 세 라인을 비례 압축한다 — 예를 들어 45일, 15일, 5일. 숫자 자체가 핵심이 아니다. 핵심은 "남은 일수"를 "남은 수명 비율"로 바꾸는 것으로, 단명 상품과 장명 상품이 같은 로직으로 돌아가게 하는 것이다.

보고서가 누구에게 가는지도 똑같이 중요하다. 창고 책임자에게만 보내면 무의미하다 — 창고는 문제를 볼 수 있지만 상품을 팔 수 없다. 보고서는 해당 고객의 계정 관리자나 고객 서비스 책임자, 즉 브랜드와 할인이나 반품을 협상할 수 있는 사람에게 가야 한다. 2019년 샌버너디노 창고는 정확히 여기서 실패했다: 보고서는 매주 생성됐고 시스템에서 읽히지 않은 채 잠들었다. 자동 이메일 발송으로 바꾸고, 주간 운영 회의에서 임박 리스트를 훑는 절차를 더한 뒤 이듬해 폐기 상각이 약 70% 줄었다 — 그 대부분은 관리가 좋아져서가 아니라, 정보가 마침내 결정할 수 있는 사람에게 닿았기 때문이다.

한 가지 세부 사항: 알림은 남은 일수만이 아니라 재고 일수도 반영해야 한다. 유통기한이 40일 남았는데 평균 판매 속도가 3주라면 그 로트는 이미 "실질적으로 만료"된 것이다. 예상 판매 완료일을 유통기한 옆에 두면 진짜 리드타임이 비로소 보인다.

식품 창고 피킹 페이스에서 로트 라벨을 확인하는 작업자

추적 훈련과 폐기 판단: 실제 상황을 기다리지 마라

식품 창고에서 로트 추적성은 평상시엔 비용 센터지만, 일이 터진 날엔 생명줄이다. 내가 상대해 본 미국 식품 고객 10곳 중 8곳은 계약에 명시한다: 리콜 통지 후 4시간 이내에(샘플 수치 — 계약을 확인할 것), 해당 로트의 전체 추적 — 어느 로케이션에 있었는지, 어느 고객에게 출고했는지, 주문별 케이스 수 — 를 제출해야 한다. 이 기한을 놓치면 잘해야 고객을 잃고, 못 하면 소송이다.

내 권장: 분기마다 모의 리콜을 돌려라. 로트를 무작위로 골라 시간을 재라 — 주문에서 완전한 흐름 보고서까지 얼마나 걸리는지. 첫 훈련에서 2시간을 넘기는 창고가 수두룩하고, 실패는 항상 3곳에 몰린다: 반품 로트를 별도 관리하지 않음, 낱개 피킹에서 로트 미기록, 수동 이동을 시스템 미입력. 훈련은 일상 운영에서는 보이지 않는 문제를 드러낸다. 훈련 기록은 보관하라 — 시설 감사 때 고객이 보는 걸 아주 좋아한다.

폐기 판단은 또 다른 마찰 지점이다. 상각을 승인하는 서명은 누구 것인지, 비용은 누가 부담하는지 — 계약에 미리 넣어라. 내가 본 실무 순서: 먼저 할인이나 기부가 가능한지 확인한다(미국에서는 식품 기부에 세액 공제가 있다 — 놓치지 않도록 현행 제도를 확인할 것), 다음으로 공급업체가 만료 상품의 일부를 회수해 주는지(응하는 브랜드도 있다), 그다음에야 폐기다. 폐기에는 증인 2명, 사진 보관, 문서화된 파기 절차가 필요하다. 단독 서명의 상각은 스스로 파는 함정이다. 한 창고에서는 슈퍼바이저가 만료된 캔디를 몰래 "폐기"한다며 재활용 업체에 팔아 현금을 챙겼다가 — 발각돼 해고됐고, 기소 직전까지 갔다.

솔직히 말해야 할 트레이드오프: 로트 관리를 세밀하게 할수록 입고와 피킹은 느려진다. 피할 수 없다. 하나의 SKU가 3개 로트라면 피커는 발걸음이 늘어난다. 내 결론: 식품 창고는 여기서 인건비를 아끼면 안 된다. 아낀 인건비로는 리콜 한 건도 커버 못 한다. 효율은 레이아웃과 설비에서 벌어라 — 로트 정확도는 타협하는 곳이 아니다.

내일 당장 할 수 있는 것: WMS에서 향후 90일 내 만료되는 재고 리스트를 뽑아 고객별·잔여 일수별로 정렬하고, 인쇄해 회의실 벽에 붙여라. 그리고 영업팀에 한 가지 질문하라 — 이 재고의 계획은? 아무도 답을 못 하면, 부족한 건 시스템 기능이 아니다. 유통기한을 진지하게 대하는 사람이다.

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