식품제조업 Lot vs Batch vs Serial — 생산·재고·추적 단위를 어디까지 나눠야 하는가
생산일보·배합일지·완제품 박스에 같은 번호를 쓰는 공장이 많다. Batch(공정 실행)·Lot(품질·재고·추적)·Serial(개체 식별)의 역할을 나누고, 다대다 Genealogy로 잇는 식별구조를 정리한다.
생산일보에는 LOT 260905-01, 배합일지에는 Batch 260905-01, 완제품 박스에도 같은 번호가 인쇄돼 있는 공장이 적지 않다.
규모가 작을 때는 큰 문제가 없어 보인다. 하루 한 제품을 한 번 배합하고 그대로 포장해 한 거래처에 출하한다면 Batch와 Lot가 사실상 일치할 수도 있다. 하지만 한 배합물이 두 포장라인으로 나뉘거나, 여러 번 생산한 Batch를 하나의 완제품 출하단위로 묶기 시작하면 문제가 달라진다. 생산실적과 재고수불의 단위가 달라지고, 클레임 발생 시 어느 원료가 어느 제품에 들어갔는지 설명하기 어려워진다.
Lot, Batch, Serial을 구분하는 목적은 용어를 어렵게 만드는 데 있지 않다. 공정에서 무엇을 함께 처리했는지, 재고에서 무엇을 같은 품질단위로 관리하는지, 유통단계에서 어느 개체를 개별적으로 식별할 것인지를 분리하는 것이 목적이다.
Batch는 설비와 공정이 만들어내는 생산 실행단위다
Batch는 제조공정을 기준으로 보는 것이 가장 명확하다. 배합기 한 회전, 솥 한 번의 가열, 반응기 한 Cycle, 증숙기 한 회차처럼 동일한 제조조건과 작업지시 아래 한 번에 처리되는 물리적 생산단위가 Batch다.
예를 들어 믹서 용량이 500kg이고 한 번에 원료 420kg을 투입해 배합한다면 그 420kg은 하나의 Batch로 관리할 수 있다. 여기에는 어떤 원료 LOT를 실제로 몇 kg 사용했는지, Recipe Version은 무엇인지, 작업자는 누구인지, 공정시간과 온도는 얼마였는지, 최종 산출량과 Loss는 얼마였는지가 연결된다.
따라서 MES에서 Batch는 단순한 번호가 아니라 공정실적을 모으는 핵심 Transaction Key가 된다. 표준 BOM에는 “무엇을 얼마나 투입해야 하는가”가 정의돼 있고, Batch Log에는 “실제로 어떤 원료 LOT를 얼마나 투입했는가”가 기록돼야 한다. 둘이 같다고 가정하면 원가와 Traceability가 동시에 왜곡된다.
Lot는 품질과 재고, 추적성을 묶는 관리단위다
Lot는 제조공정 그 자체보다 동일한 관리조건을 공유한다고 판단한 물량의 집합에 가깝다. 완제품 Lot에는 일반적으로 생산일자·제품·소비기한·품질상태·보관조건·출하이력 등이 연결된다. 특정 고객이나 제품군에서는 CoA·검사결과·포장 Version도 Lot에 연결될 수 있다.
중요한 것은 Lot를 단순히 날짜번호로 만들지 않는 것이다. 20260905라는 번호를 만들었다고 추적성이 생기는 게 아니다. 그 번호가 어떤 Batch에서 만들어졌는지, 어떤 원료 LOT가 들어갔는지, 몇 개가 생산됐고 현재 몇 개가 남아 있으며 어느 고객에게 몇 개가 출하됐는지가 연결돼야 한다. 그래서 Lot Tracking의 핵심은 번호체계보다 Genealogy다.
Batch와 Lot 사이에는 고정된 포함관계가 없다
Batch ⊂ Lot이라고 정해 놓는 시스템이 있고, 반대로 Lot ⊂ Batch라고 정의하는 경우도 있다. 둘 다 특정 공장에서는 맞을 수 있지만 모든 제조현장에 적용할 수 있는 규칙은 아니다.
한 Batch를 생산한 뒤 고객 A용 500g 제품과 고객 B용 1kg 제품으로 나누어 포장한다면 하나의 Batch에서 여러 Finished Lot가 만들어질 수 있다.
Batch 001 → Lot A + Lot B
반대로 동일한 Recipe로 Batch 001, 002, 003을 연속 생산한 뒤 공정 특성과 품질관리 기준에 따라 하나의 완제품 Lot로 관리하는 구조도 기술적으로 가능하다.
Batch 001 + Batch 002 + Batch 003 → Lot A
다만 여러 Batch를 하나의 Lot로 통합하면, 해당 Lot에 문제가 발생했을 때 연결된 모든 Batch와 원료범위를 추적할 수 있어야 한다. 따라서 ERP/MES에서는 Lot와 Batch 사이를 부모·자식 한 줄로 고정하기보다 다대다 관계를 저장할 수 있는 Genealogy Table로 설계하는 편이 안전하다.
Serial은 집합이 아니라 하나의 개체를 식별한다
Serial은 Lot나 Batch와 성격이 다르다. Lot와 Batch가 일정한 수량의 집합을 관리한다면, Serial은 특정 개체 하나에 부여되는 고유 ID다. 예를 들어 선물세트 한 박스에 고유번호를 부여하거나, 물류 팔레트 하나를 독립적으로 식별할 수 있다.
식품이라고 Serial 관리가 불가능한 것은 아니다. 다만 500원짜리 소비자 개별제품 수백만 개에 Serial을 부여할 경제적 필요가 없을 수 있을 뿐이다. 대신 박스·케이스·팔레트 같은 물류단위를 Serial 수준으로 관리하는 것은 충분히 현실적이다.
GS1 체계에서는 물류단위를 SSCC(Serial Shipping Container Code)로 고유하게 식별할 수 있다. 한 팔레트에 여러 박스와 여러 Lot가 실려 있더라도 SSCC 하나를 물류단위의 고유키로 쓰고 그 내부 구성정보를 시스템에 연결할 수 있다. 즉 Serial은 제품 자체뿐 아니라 추적해야 할 물류단위를 1:1로 식별하는 수단으로도 활용할 수 있다.
세 식별단위는 역할이 다르다
| 구분 | Batch | Lot | Serial |
|---|---|---|---|
| 핵심 관점 | 생산공정 실행 | 재고·품질·추적 | 개별 개체 식별 |
| 대표 단위 | 배합기·솥·설비 Cycle | 동일 관리조건의 제품군 | 개별 제품·박스·팔레트 |
| 생성 시점 | 생산공정 시작 또는 확정 시 | 공정완료·포장·재고생성 시점 등 | 개체 생성·포장·물류단위 구성 시 |
| 주요 데이터 | 실제 투입, 공정조건, Yield | 소비기한, QC 상태, 재고·출하 | 개체 위치·이동·구성 |
| 수량관계 | 복수 원료 LOT 소비 가능 | 복수 Batch와 연결 가능 | 일반적으로 하나의 개체 |
| MES 역할 | Process Log 중심 | 생산결과·Genealogy | 포장·물류 식별 |
| ERP 역할 | 생산실적 참조 | 재고수불·출하 핵심 | 개체/물류단위 추적 |
| Traceability | 원료 투입 역추적 | 재고·출하 정추적 | 개별 이동 추적 |
이 구분 역시 법령에서 모든 식품공장에 강제하는 단일 용어체계가 아니라, ERP·MES Master Data와 Traceability를 설계하기 위한 운영구조다.
가장 중요한 연결은 Raw Material Lot에서 시작한다
완제품 Lot 번호만 잘 만들어서는 충분하지 않다. 실제 Traceability는 원료가 입고되는 순간부터 시작한다. 공급업체 원료 LOT를 ERP에서 입고하고, 생산지시가 생성되고, MES에서 Batch를 시작하고, 작업자가 원료를 투입할 때 실제 원료 LOT를 Scan한다. 그 결과 Raw Material Lot → Production Batch 관계가 만들어진다.
Batch가 끝난 뒤 포장공정에서 Finished Lot가 생성되면 Production Batch → Finished Lot 관계가 추가되고, 박스나 팔레트를 개별 식별한다면 다시 Finished Lot → Serial/SSCC 관계가 연결된다. 이 구조가 만들어지면 원료에서 출하처까지 한 방향으로만 보는 게 아니라 양방향 추적이 가능하다.
클레임에서는 Batch와 Lot가 서로 다른 질문에 답한다
완제품 LOT F260905-03에서 이물 클레임이 발생했다고 하자. 먼저 Lot를 기준으로 어느 고객에게 얼마가 출하됐는지 확인한다. 이것이 Forward Traceability다. 그다음 해당 Lot를 만든 Production Batch를 찾는다. Batch에서는 실제 사용한 원료 LOT·작업시간·설비·공정조건·CCP 기록을 조회할 수 있다. 이것이 Backward Traceability의 핵심이다.
즉 Lot는 “문제가 있는 제품이 지금 어디에 있는가”를 설명하는 데 강하고, Batch는 “그 제품을 실제로 어떻게 만들었는가”를 설명하는 데 강하다. 둘을 같은 번호로 사용할 수는 있어도 데이터모델까지 같은 객체로 만들어서는 안 되는 이유가 여기에 있다. 이 구조는 LOT 역추적 및 원재료 수불 추적 체계와 직접 연결된다.
Mass Balance도 식별단위가 명확해야 계산된다
원료 LOT 1,000kg이 입고됐다고 하자.
- Batch A에 300kg
- Batch B에 250kg
- Batch C에 200kg
- 잔량 230kg
- 샘플·폐기 20kg
으로 처리됐다면 합계 1,000kg이 설명된다. 그런데 Batch와 Lot를 모두 같은 날짜번호로 관리하면 실제 어느 공정에서 몇 kg이 사용됐는지를 분리하기 어려워질 수 있다.
완제품에서도 마찬가지다. Batch A가 280kg의 정상 산출량을 냈고 두 개의 Finished Lot로 각각 180kg, 100kg이 나뉘었다면 그 관계가 저장돼야 한다. Mass Balance는 원료 투입량과 완제품 생산량이 무조건 같아야 한다는 뜻이 아니라, 수분증발·정상 Loss·샘플·재작업·폐기 등 공정별 차이를 Transaction으로 설명할 수 있어야 한다는 뜻이다.
Numbering Rule에 지나치게 많은 의미를 넣지 않는 편이 좋다
LOT 번호를 보면 공장코드·제품코드·생산일·설비·작업조·Line·Sequence를 전부 알 수 있도록 설계하려는 경우가 있다. 예를 들어 IC-FG017-260905-L2-A-003 같은 방식이다. 초기에는 편리해 보이지만, 공장이나 Line이 변경되고 품목코드 체계가 바뀌면 Numbering Rule 자체가 유지보수 대상이 된다.
번호는 식별키이고 상세정보는 데이터베이스 속성으로 저장하는 편이 안정적이다. Batch ID를 B260905-0042 정도로 유지하고 DB에서 Product·Line·Recipe Version·Shift·Start Time을 연결할 수 있다. Finished Lot도 마찬가지로, 외부에 인쇄되는 Lot No.에는 소비자·거래처가 이해할 필요가 있는 규칙만 반영하고 내부 Primary Key와 분리할 수 있다. 좋은 식별번호는 모든 정보를 담은 번호가 아니라 중복 없이 객체를 정확히 찾을 수 있는 번호다.
바코드와 QR은 번호를 출력하는 기술이지 추적성 자체가 아니다
원료 포대에 QR을 붙였다고 Traceability가 완성되는 게 아니다. Scan했을 때 어떤 Transaction이 생성되는지가 중요하다. 원료 LOT를 Scan하고 Batch를 Scan하면 시스템에는 Material Lot RM001 → Batch B0042 → 35kg이라는 Actual Consumption이 생성돼야 한다. 포장공정에서도 Batch와 Finished Lot의 연결 Transaction이 만들어져야 하고, 팔레타이징 시에는 Finished Lot와 SSCC가 연결돼야 한다.
바코드나 QR은 이러한 관계를 빠르고 정확하게 입력하기 위한 수단이다. 이 지점은 포장재 가변정보 인쇄와 오기 방지와 연결된다. LOT 번호·소비기한·GTIN·고객 물류코드 등이 MES Production Order와 연결되지 않고 작업자가 라벨 프로그램에 다시 입력한다면 표시오류 위험이 남는다.
GS1-128과 SSCC도 같은 용어로 보면 안 된다
현장에서 “팔레트 Serial은 GS1-128로 관리한다”고 표현하기도 한다. 정확하게는 GS1-128은 정보를 표현하는 바코드 심벌로지이고, SSCC는 물류단위를 고유하게 식별하는 Identification Key다. SSCC는 GS1 Application Identifier (00)을 사용해 GS1-128 등에 표현할 수 있다. 제품 GTIN·Lot Number·소비기한 등도 각 Application Identifier를 이용해 필요한 구조로 표현할 수 있다.
따라서 ERP에서는 Data Identifier를 먼저 정의하고, 바코드는 이를 물리적으로 표현하는 Layer로 두는 편이 맞다. Data → Identification Key → Barcode/QR 순서다.
Serial을 많이 만들수록 Traceability가 좋아지는 것도 아니다
추적단위를 작게 만들면 회수범위를 줄일 가능성은 있다. 하지만 실제 제조공정의 혼합경계를 무시한 채 Serial만 세분화하면 False Precision이 발생한다. 500kg 배합기에서 하나의 Batch로 혼합된 제품을 1개씩 Serial 관리하더라도, 원료 문제가 발생하면 결국 동일 Batch에서 생산된 전체 범위가 영향권이 될 수 있다.
따라서 Traceability Granularity는 실제 물리적 제조경계를 따라야 한다. 어느 시점에 물질이 섞였고, 어디에서 분리됐고, 어떤 품질판정이 함께 적용됐는지를 기준으로 관리단위를 결정해야 한다. 추적성의 목적은 회수범위를 무조건 작게 만드는 게 아니라 실제로 영향을 받은 범위를 정확하게 특정하는 것이다.
ERP와 MES의 객체도 분리해야 한다
ERP는 재고를 중심으로 Item · Warehouse · Inventory Lot · Quality Status · Shipment · Customer를 관리한다. MES는 생산실행을 중심으로 Production Order · Batch · Actual Material Lot Consumption · Equipment · Process Parameter · Yield · Finished Lot Creation을 관리한다.
두 시스템에서 Batch와 Lot를 같은 문자열로 쓰더라도 서로 다른 의미를 가진다면 별도의 ID를 유지하고 Mapping해야 한다. ERP Master Data는 품목과 BOM, Lot 관리여부, Serial 관리여부, 채번정책을 정의하고 MES는 실제 생산 Transaction을 생성한다. 이것이 품목 마스터 및 가변 BOM 관리와 연결되는 부분이다.
수기 혼용과 ERP·MES 식별구조의 차이는 번호가 아니라 관계다
| 구분 | 수기·혼용 관리 | ERP·MES 구조화 관리 |
|---|---|---|
| Batch/Lot | 같은 번호로 임의 사용 | 객체 역할 분리 |
| 실제 원료 투입 | 생산일보 기록 | Material Lot-Batch Transaction |
| 완제품 생성 | 날짜 기준 Lot 부여 | Batch-Finished Lot Genealogy |
| 분할·병합 | 비고란 기록 | 다대다 관계 저장 |
| Serial | 필요 시 임의 채번 | Lot/물류단위와 1:1 Mapping |
| Mass Balance | 월말 수기 확인 | Transaction 기준 수량 대사 |
| Recall | 문서 역검색 | Forward/Backward 조회 |
| 표시 | 라벨 프로그램 재입력 | MES 데이터 기반 가변 인쇄 |
| 변경추적 | 수정문서 확인 | Audit Trail |
결국 시스템이 기억해야 할 것은 Lot 번호 자체가 아니다. 어떤 원료 LOT가 어떤 Batch에 실제로 투입됐고, 그 Batch가 어떤 Finished Lot를 만들었으며, 그 Lot가 어떤 박스·팔레트와 출하처로 이동했는가다.
Batch는 공정의 사실을 기록하고, Lot는 품질과 재고의 범위를 관리하며, Serial은 개체를 식별한다. 세 용어가 우연히 같은 번호를 쓰더라도 데이터상 같은 객체일 필요는 없다. 식품 ERP·MES의 Traceability는 번호를 복잡하게 만드는 작업이 아니라, 이 세 객체 사이의 관계를 끊기지 않게 저장하는 작업이다.
제조업 재고관리 완전정복 — 원재료부터 완제품·LOT·FEFO·원가까지
재고 · 물류3분 만에 확인최종 검증:
개정 이력
· 발행
여기 담긴 규정·수치는 최소 6개월마다 위 공식 출처와 대조해 재확인합니다. 실질적 변경(요건·기준·수치)은 조용히 덮어쓰지 않고 개정 이력에 남깁니다.
이 글은 일반적인 실무 정보이며 법률·세무·행정 자문이 아닙니다. 규정·수치는 관할과 시점에 따라 달라지므로, 실제 판단 전 위 공식 출처와 관할 기관에서 최신 기준을 확인하시기 바랍니다.
