식품제조업 동적 안전재고 — 평균 리드타임이 아니라 변동성을 관리해야 하는 이유
원료가 평균 7일에 온다는 사실보다 5일에도 15일에도 온다는 사실이 중요하다. 수요·리드타임 변동성(σD·σL)으로 Buffer를 재계산하되, 식품은 소비기한 상한까지 함께 보는 동적 안전재고를 정리한다.
원료가 평균 7일 만에 들어온다는 사실보다 중요한 것은 실제로 5일에도 들어오고 15일에도 들어온다는 사실이다.
ERP에 Lead Time 7일, Safety Stock 1,000kg을 등록해 놓고 1년 동안 그대로 사용하면 평균적인 공급상황은 설명할 수 있어도 공급 불확실성은 설명하지 못한다. 반대로 지연이 두려워 안전재고를 과도하게 늘리면 식품공장에서는 보관비보다 소비기한 경과와 품질저하, 폐기 문제가 먼저 발생할 수 있다.
동적 안전재고의 목적은 재고를 많이 확보하는 게 아니라 수요와 공급의 변동성이 바뀔 때 필요한 Buffer를 다시 계산하는 것이다.
평균 리드타임이 같아도 공급위험은 다르다
두 공급업체의 평균 리드타임이 모두 7일이라고 하자. A사는 대부분 6~8일 사이에 납품하고, B사는 어떤 주문은 3일, 어떤 주문은 14일 만에 납품한다. ERP에 평균 7일만 저장하면 두 공급업체는 동일하게 보인다. 하지만 생산계획 관점의 위험은 전혀 다르다.
이를 구분하는 값이 리드타임 표준편차, σL이다. 실제 리드타임은 PO 발행일과 입고일의 차이에서 계산할 수 있다. 다만 공급업체 귀책 지연을 측정하려면 구매사가 요청한 납기변경·휴무일·분할납품 등의 정책을 명확히 정의해야 한다. 잘못 정의된 Lead Time 데이터로 정교한 안전재고 공식을 계산해도 결과는 정확해지지 않는다.
수요와 리드타임이 함께 흔들리면 두 변동성을 함께 계산한다
수요와 리드타임이 서로 독립적이라고 가정할 수 있는 일반적인 상황에서는 다음 형태의 안전재고식을 쓸 수 있다.
SS = Z × √( L̄ × σD² + D̄² × σL² )
여기서 D̄는 일평균 수요, σD는 일일 수요 표준편차, L̄은 평균 리드타임, σL은 리드타임 표준편차다. Z는 회사가 설정한 목표 서비스 수준에 대응하는 계수다.
첫 번째 항 L̄ × σD²는 리드타임 동안 발생하는 수요 불확실성을 반영하고, 두 번째 항 D̄² × σL²는 납품일 자체가 흔들리는 위험을 반영한다. 따라서 평균수요가 안정적이어도 공급업체의 납기가 불규칙해지면 Safety Stock은 증가한다.
다만 수요와 리드타임 사이에 상관관계가 크거나 수요가 간헐적이고 분포가 비정상적이라면, 이 단순식을 그대로 적용하기보다 별도의 모델이나 시뮬레이션이 필요하다.
서비스 수준은 ABC 등급표에서 자동으로 결정되지 않는다
A품목은 99%, B품목은 95%, C품목은 90%라는 식의 표는 관리정책의 예시로 쓸 수 있지만 보편적인 기준은 아니다. 식품공장에서는 금액 중요도만으로 판단하기 어렵다.
kg당 가격이 낮은 소금이나 특정 첨가제가 없어서 전체 생산라인이 멈춘다면, 구매금액 기준 C등급이어도 생산 중요도는 매우 높다. 반대로 고가 원료라도 주문생산 제품에만 쓰이고 대체조달이 쉽다면 높은 Safety Stock이 필요하지 않을 수 있다. 따라서 Service Level은 구매금액뿐 아니라 생산중단 영향·대체 공급처·소비기한·공급 변동성·최소주문수량·보관 CAPA를 함께 고려해 설정하는 편이 현실적이다.
리드타임 데이터는 Vendor별로 분리해야 한다
같은 원료를 국내업체와 해외업체에서 동시에 구매한다면 하나의 Lead Time으로 관리해서는 안 된다. Raw Material + Vendor + Supply Route 단위로 리드타임 이력을 분리하는 것이 좋다.
해외 수입원료는 제조 Lead Time·선적대기·해상/항공운송·통관·국내운송이 합쳐진다. 어느 구간의 변동성이 커졌는지 알 수 있어야 공급처 변경이나 Safety Stock 증가 중 어떤 대응이 필요한지 판단할 수 있다. Vendor EDI를 쓰면 PO·공급업체 Confirmed Date·ASN·실제 Receipt Date를 연결해 계획 리드타임과 실제 리드타임의 차이를 자동 축적할 수 있다.
Dynamic Safety Stock은 매일 숫자를 바꾸는 시스템이 아니다
동적이라는 표현 때문에 매일 안전재고를 다시 계산해야 한다고 생각하기 쉽다. 실무적으로는 품목 특성에 맞는 Rolling Window를 설정한다. 최근 90일 또는 180일처럼 일정 기간의 수요와 입고실적을 사용하고, 매주 또는 매월 평균과 표준편차를 다시 계산할 수 있다.
중요한 것은 기간 자체가 아니라 동일한 기준을 지속적으로 적용하는 것이다. 신규 공급업체처럼 데이터가 부족하면 통계값만 신뢰하지 않고 계약 Lead Time과 보수적인 초기 Buffer를 사용한 뒤 실적이 쌓이면서 조정한다.
이상치도 무조건 삭제해서는 안 된다
평소 7일인 원료가 통관 문제로 한 번 25일 걸렸다고 하자. 이를 Outlier라고 삭제하면 실제 공급망 위험을 과소평가할 수 있다. 반대로 천재지변이나 일회성 행정사고까지 일반 변동성에 계속 포함하면 안전재고가 과도하게 증가할 수 있다.
따라서 ERP에서는 정상 Lead Time Variability와 Exceptional Delay를 구분해 저장하는 편이 좋다. 극단적 지연은 통계식에 무조건 더하는 게 아니라 Scenario Buffer 또는 공급망 Stress Test로 별도 검토할 수 있다. (Max Lead Time - Average Lead Time) × Average Demand 같은 최대 리드타임 방식도 보수적인 Buffer 계산법으로 활용할 수 있지만, 통계식으로 계산한 안전재고 위에 다시 기계적으로 더하면 위험을 이중 반영할 수 있다.
안전재고가 변하면 ROP도 함께 움직여야 한다
연속검토 방식에서 대표적인 재발주점(ROP)은 다음과 같이 계산할 수 있다.
ROP = D̄ × L̄ + Safety Stock
따라서 공급업체의 평균 리드타임이나 변동성이 증가하면 ROP도 변한다. 여기서 ERP가 Safety Stock만 업데이트하고 Reorder Point를 그대로 두면 계산결과가 구매시점에 반영되지 않는다. MRP를 쓰는 사업장이라면 Safety Stock·Lead Time·예정입고·발주잔량·생산계획이 같은 Planning Logic 안에서 계산돼야 한다. 동적 안전재고는 별도의 재고분석 화면이 아니라 구매계획을 바꾸는 Master Parameter여야 한다.
수요예측 오류도 안전재고를 흔든다
판매예측이 계속 실제보다 낮으면 안전재고를 아무리 정교하게 계산해도 결품이 반복된다. 반대로 과대 Forecast가 지속되면 Safety Stock과 별개로 기본 계획수량 자체가 과대해진다. 따라서 수요예측 오차와 Bias를 같이 봐야 한다.
특히 프로모션·명절·급식 일정처럼 설명 가능한 이벤트 수요를 일반 변동성에 모두 포함하면 σD가 과도하게 커질 수 있다. Baseline Demand와 Event Demand를 구분하는 이유다.
식품에서는 안전재고의 상한도 필요하다
일반 제조업에서는 재고를 추가 확보하는 것이 서비스 수준을 높이는 방향으로 작동할 수 있다. 식품은 다르다. 소비기한 30일인 원료에 45일치 Safety Stock을 계산했다면, 수학적으로 계산이 됐다는 사실보다 실제로 사용할 수 있는지가 먼저다.
따라서 시스템에서는 통계적 Safety Stock과 함께 Maximum Inventory·Remaining Shelf Life·FEFO·MOQ·Storage Capacity를 확인해야 한다. 필요량이 소비 가능한 양보다 많다면 재고를 늘리는 대신 발주주기를 단축하거나 공급업체를 이원화하는 것이 더 적절할 수 있다.
고정 안전재고와 동적 안전재고의 차이는 재계산 근거에 있다
| 구분 | 수기·고정 Safety Stock | ERP/MES 동적 Safety Stock |
|---|---|---|
| Lead Time | Master 고정값 | PO-Receipt 실적 재계산 |
| 변동성 | 경험적 여유일수 | σL 측정 |
| 수요 | 월평균 중심 | 평균·σD·Forecast Error |
| 공급업체 | 품목당 단일값 | Vendor/Route별 분석 |
| 서비스 수준 | 일괄 적용 | 품목 중요도별 정책 |
| ROP | 수기 변경 | Safety Stock과 동시 계산 |
| 소비기한 | 별도 판단 | 재고상한 조건 반영 |
| MRP | 정적 Parameter | 최신 Planning Parameter |
| 이상징후 | 결품 후 확인 | Variability Trend Alert |
MES는 안전재고를 계산하는 시스템보다 실제 소비속도를 제공하는 시스템이다
ERP는 PO·입고일·공급업체·Lead Time·현재재고·구매계획을 관리한다. MES는 실제 생산에서 원료가 얼마나 빠르게 소비되는지를 제공한다. 표준 BOM상 하루 500kg을 사용할 것으로 계획했지만 실제 Yield 악화로 540kg이 소비된다면 재고 소진속도는 계획보다 빨라진다.
따라서 BOM Standard Consumption만으로 MRP를 운영하지 말고 MES의 Actual Consumption과 Yield 추세를 계획 Parameter에 피드백할 필요가 있다. 입고 후 원료 입고검사에서 QC HOLD된 재고도 물리적으로 존재한다는 이유만으로 Available Inventory에 포함해서는 안 된다.
안전재고가 계속 증가한다면 공급망 자체를 고쳐야 한다
Dynamic Safety Stock은 공급업체 문제를 재고로 덮는 도구가 아니다. σL이 계속 증가한다면 더 많은 재고를 쌓기 전에 왜 납기가 흔들리는지를 봐야 한다. Vendor EDI의 Confirmed Delivery와 ASN 데이터를 분석하고, 공급업체별 On-Time Delivery를 비교하며, 필요하면 복수 공급처를 확보한다. 해외 원료라면 국내 대체 공급원을 일부 확보하거나 주문주기를 짧게 나누는 방식도 검토할 수 있다.
좋은 안전재고 시스템은 “얼마를 더 쌓아야 하는가”만 계산하지 않는다. 수요 변동 때문에 Buffer가 필요한지, 공급 리드타임 때문에 필요한지, 아니면 공급망 구조 자체를 변경해야 하는지를 숫자로 분리하는 시스템이어야 한다.
그 결과가 ERP의 ROP와 MRP를 바꾸고, MES의 실제 소비량과 다시 비교될 때, Safety Stock은 창고에 고정된 숫자가 아니라 생산계획과 함께 움직이는 관리변수가 된다.
제조업 재고관리 완전정복 — 원재료부터 완제품·LOT·FEFO·원가까지
재고 · 물류3분 만에 확인최종 검증:
개정 이력
· 발행
여기 담긴 규정·수치는 최소 6개월마다 위 공식 출처와 대조해 재확인합니다. 실질적 변경(요건·기준·수치)은 조용히 덮어쓰지 않고 개정 이력에 남깁니다.
이 글은 일반적인 실무 정보이며 법률·세무·행정 자문이 아닙니다. 규정·수치는 관할과 시점에 따라 달라지므로, 실제 판단 전 위 공식 출처와 관할 기관에서 최신 기준을 확인하시기 바랍니다.
