아직도 아픈 숫자부터 시작하겠습니다: 47초 — 우리의 최악의 WCS 작업 타임아웃 판단 착오가 시작된 지점입니다.

지난 11월, 중고 컨베이어의 분기점에서 카톤 하나가 47초 동안 멈춰 있었습니다. WCS는 이를 작업 타임아웃으로 판단하고 대체 작업을 보냈습니다. 하지만 카톤이 걸린 것은 아니었습니다 — 분기점의 먼지 낀 포토아이가 반응이 느렸을 뿐입니다. 두 번째 작업은 푸셔에게 같은 카톤을 다시 분기하라고 지시했고, 카톤은 잘못된 슈트로 곧장 들어갔습니다. 급한 주문이었습니다. Los Angeles의 고객이 입고를 기다리고 있었습니다. 우리는 긴급 운송비를 지불하고 카톤 하나를 찾는 데 오후를 다 썼습니다.

우리는 3,000제곱미터 창고를 운영합니다. 그렇게 돈을 태울 여유는 없습니다. 그날 이후로 저는 WCS 타임아웃 난장판을 전부 뜯어보고 다시 조립했습니다. 배운 모든 것이 여기 있습니다.

먼저, 우리의 상황: 중고 컨베이어, 재생 리프트, 그리고 할부로 산 새 AMR 한 대. 대기업의 밀리초 단위 장비 응답 기준은 우리 세상에는 존재하지 않습니다. 중고 PLC의 하트비트는 가끔 졸고, 랙 두 줄을 가로지르는 WiFi는 모든 것을 느리게 하며, AMR은 무엇이든 확인하는 데 몇 초가 걸릴 수 있습니다. WCS 기본값은 새 장비를 전제로 했습니다. 우리 창고에서는 하루에 열두 번씩 타임아웃을 외쳤고, 열 번 중 아홉 번은 오경보였습니다.

대기업에서 베낀 WCS 작업 타임아웃 임계값은 당신에게 맞지 않습니다

처음에는 편하게 가려고 인테그레이터에게서 받은 업계 권장 타임아웃 표를 베꼈습니다. 더 나빠질 뿐이었습니다: 컨베이어는 5초 만에 타임아웃이 되며 하루 종일 양치기 소년처럼 외쳤고, AMR은 30초를 받았는데 진짜로 멈췄을 때 WCS는 멍청하게 기다리고만 있었습니다.

그러다 인테그레이터와 술 한잔을 했고, 그때서야 마침내 깨달았습니다: WCS 타임아웃은 한 가지가 아닙니다. 세 층입니다.

1층은 하트비트입니다: 장비가 살아 있는가? PLC 하트비트는 보통 1–3초마다 뜁니다. 세 번 연속 놓치면 그 장치는 기본적으로 오프라인입니다. 이 층은 작업과 무관합니다 — 그냥 출석 체크입니다.

2층은 ACK입니다: 작업이 도착했는가? WCS가 작업을 보내면 장비가 받았다고 답합니다. 유선 컨베이어는 5초 안에 ACK해야 합니다 — 그게 본분입니다. WiFi 위의 AMR은 15 안에 충분합니다. 우리 중고 리프트는 ACK에 8–10초가 걸리는 경우가 많습니다. 대기업 기준은 5초 타임아웃이라고 하지만, 우리는 12로 정했습니다. 부끄러울 것 없습니다. 장비는 그런 것입니다.

3층은 완료 확인입니다: 일이 끝났는가? 이게 큰 것입니다. 컨베이어 작업은 발송부터 카톤이 슈트에 떨어지기까지 1–2분이 걸릴 수 있습니다. 존을 가로지르는 AMR 이동은 5가 걸릴 수 있습니다. 이 층의 임계값은 작업 유형을 따라야 합니다 — 만능 설정은 없습니다.

우리가 정착한 단계 표는 다음과 같습니다. 가져가서 조정하세요:

장비 ACK 타임아웃 완료 타임아웃 비고
컨베이어 구간 8 sec 90 sec 중고 PLC, 하트비트 졸음, ACK 여유
리프트 12 sec 120 sec 느린 기계 동작, 중하중 시 속도 절반
AMR 15 sec 300 sec 랙 사이 WiFi, 존 횡단 작업에는 현실적인 시간

핵심: 임계값은 표준 답이 아니라 당신 장비의 체질을 따릅니다. 장비가 전부 새것이라면 이것들을 절반으로 줄이세요.

작업 타임아웃: 재시도할까, 기다릴까? 먼저 세 가지를 확인하세요

좋은 임계값이 있어도 타임아웃은 발생합니다 — 장비에도 기분이 있습니다. 결정적인 질문은 다음에 무엇을 할 것인가입니다: 재발송할까, 기다릴까?

우리는 이것을 비싸게 배웠습니다. 2025년 11월 18일, 밤 9시경: 우리 AMR이 입고장에서 엘리베이터 로비로 팔레트를 옮기는 작업을 받았습니다. 로비에서 ACK하고 엘리베이터를 기다렸습니다. 그러다 WiFi가 40초 동안 끊겼습니다. 작업은 끝났습니다 — 완료 메시지가 도착하지 않았을 뿐입니다.

WCS는 30초 안에 완료 확인을 보지 못하고 타임아웃을 선언한 뒤, 두 번째 AMR(성수기 렌털)에게 같은 팔레트를 옮기라고 보냈습니다. WiFi가 돌아왔을 때, 1호기가 작업 완료를 보고한 바로 그 순간 2호기가 도착했습니다. 두 로봇이 하나의 팔레트를 빙빙 돌았습니다. 그러다 2호기가 일을 했습니다 — 팔레트를 포크로 들어 올리고 두 걸음 이동한 뒤, 1호기에 길이 막혀 팔레트를 소방 통로에 내려놓았습니다.

그날 밤: 네 명, 두 시간의 재작업. 막힌 소방 통로와 산업단지로부터의 아슬아슬한 벌금 위기. 시간당 과금되는 렌털 AMR이 헛되이 세 시간을 태웠습니다. 나중에 계산해 보니 그 하룻밤 비용이 창고 전체에 WiFi 액세스 포인트 두 개를 추가하는 비용보다 많았습니다.

근본 원인을 한 문장으로 말하면: 이미 ACK한 작업이 미실행으로 취급되어 재발송된 것입니다. 그 이후로 모든 타임아웃은 관제 화면 옆에 붙은 의사결정 프레임워크를 거칩니다 — 먼저 분류하고, 그다음 행동합니다:

첫째, ACK가 돌아왔는가? ACK가 없다는 것은 장비가 작업을 받지 못했다는 뜻입니다 — 아마 통신 장애입니다. 재발송은 안전합니다. 하지만 먼저 하트비트를 확인하세요: 장치가 출석 체크조차 하지 않고 있다면 백 번 재시도해도 소용없습니다. 사람을 보내 장비를 직접 보게 하세요.

둘째, 작업이 재진입 가능한가? 조회와 상태 동기화는 자유롭게 다시 보내세요. 하지만 장비를 움직이게 하는 것 — 운송, 분기, 푸시 — 은 한 번이라도 ACK했다면 이미 실행 중일 수 있다고 가정하고 절대 자동 재시도하지 마세요. WCS는 작업이 얼마나 진행됐는지 모릅니다. 푸셔가 이미 민 카톤 A를 슈트 3으로 밀라고 재발송하면, 두 번째 푸시가 뒤에 있는 무고한 카톤 B를 칠 수 있습니다.

셋째, 웨이브를 보세요. 막힌 화물이 웨이브 마감에 위협이 되는가? 아니면 기다리세요. 그렇다면 사람에게 에스컬레이션하세요. 아무도 서두르지 않는 카톤 하나 때문에 라인 전체를 멈추지 마세요.

우리의 저렴한 해결책: 퇴역 태블릿 위의 타임아웃 작업 풀

대기업의 해법은 디지털 트윈과 멱등성 개조 — 여섯 자리 숫자입니다. 그런 돈을 태울 수는 없습니다. 우리의 해결책은 $500 미만이었습니다.

퇴역 태블릿을 가져와 컨베이어 옆에 장착하고 화면을 딱 하나만 띄웠습니다: 타임아웃 작업 풀입니다. 타임아웃된 작업은 더 이상 자동 재시도되지 않습니다. 풀에 떨어져 빨갛게 변합니다.

컨베이어 분기점에서 멈춘 카톤과 빨간 경고등, 태블릿을 들고 다가오는 기술자

작업자의 일은 아주 단순합니다: 빨간색을 보면, 걸어가서, 봅니다. 컨베이어 문제는 육안으로 보입니다 — 진짜로 걸린 것인가, 아니면 그냥 느린 것인가? 진짜로 걸렸다면: 수동 처리를 누르면 작업이 사람에게 넘어갑니다. 그냥 느리다면: 계속 대기를 누르면 WCS가 완료 창을 두 배로 늘립니다. 장비가 작업을 전혀 받지 못했다면: 재발송 확인을 누릅니다.

그 소박한 화면이 가동된 지 한 달 후, 잘못된 재발송은 하루 열두 번에서 제로가 되었습니다. 한 달에 약 20시간의 오발송 추적이 사라졌습니다. $500. 값어치가 있었습니다.

우리의 타임아웃 SOP, 관제실 벽에 붙은 것

저렴한 해결책이 통하자 SOP로 문서화해 벽에 붙였습니다:

L1 — 자동: ACK 없고 하트비트 건강한 작업만 자동 재시도할 수 있으며, 최대 2회, 간격을 늘려서(30초, 그다음 60). 그래도 없으면 L2로 에스컬레이션.

L2 — 사람 확인: ACK는 있으나 완료가 없는 작업은 타임아웃 풀로 가고, 작업자가 5분 안에 현장에서 확인합니다. 장비가 이미 했다 → WCS가 완료로 표시합니다. 미실행 → 사람이 재발송을 누릅니다.

L3 — 레인 잠금: 같은 장비가 한 시간에 3번 타임아웃되거나, L2 장비 고장 판정이 두 번 연속 나오면 — 레인을 잠그고, 유지보수를 부르고, 백업 레인이 있으면 WCS가 작업을 그쪽으로 우회합니다.

그리고 철칙 하나: WCS는 같은 작업에 대해 30초 안에 두 개의 실행 명령을 보내서는 안 됩니다. 그 규칙은 그 11월의 밤으로 산 것입니다. 지금은 설정에 들어 있고, 아무도 바꿀 수 없습니다.

직관에 반하는 교훈 하나: 타임아웃 임계값을 짧게 하는 것이 더 민감한 것은 아닙니다. 방아쇠가 가벼운 임계값은 모든 것에 소리치는 예민한 감독자입니다. 한 달 동안 오경보를 퍼부으면 작업자는 진짜를 포함해 모든 경보를 무시하게 됩니다. 양치기 소년 이야기는 창고에서 매일 벌어집니다. 임계값의 역할은 이상을 즉시 잡는 것이 아니라 — 중요할 때 잡는 것입니다. 오경보로 사람들의 주의력을 갈아버리느니, 진짜 타임아웃을 30초 더 기다리게 하는 편이 낫습니다.

우리의 WCS는 중고이고, 장비도 중고이며, 태블릿조차 퇴역품입니다. 하지만 타임아웃을 정리한 이후로 하루 8,000건의 주문이 나오는 성수기에도 재발송 사고는 단 한 건도 없었습니다.

소규모 창고에는 나름의 생존 방식이 있습니다: 대기업은 돈으로 안정성을 사고, 우리는 현실을 인정함으로써 안정성을 삽니다 — 장비에는 기분이 있고, 임계값에는 여유가 필요하며, 어떤 일은 그냥 사람이 걸어가서 봐야 합니다. 그것을 인정하는 것은 부끄러운 일이 아닙니다. 사고가 부끄러운 것입니다.

Xiao Ma, 소규모 창고 운영자 지음

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