처음부터 결론을 말하겠다: 자동창고(ASRS)와 AMR을 통합할 때——고전적인 ASRS AMR 통합에서——고통의 90%는 두 시스템 사이의 '이음매'에 있다. 작업이 어디서 인계되는지, 작업 정보를 누가 먼저 아는지, 택트 속도가 맞지 않을 때 누가 기다리는지가 그것이다. 이 세 가지를 틀리면 크레인이 얼마나 빠른지, 로봇을 몇 대 샀는지는 아무 의미가 없다: 입고 도크는 어쨌든 막힌다. 여기에는 두 측면이 있다. 하나는 물리적이다——인수지점을 어디에 두고, 버퍼를 얼마나 크게 둘 것인가. 다른 하나는 정보 측면이다——WCS와 AMR 디스패처 사이에서 누가 누구를 지휘하는가. 물리적 실수는 고치기 싸다. 정보 실수는 몇 달간의 재작업으로 돌아온다.
쉽게 말하면, ASRS와 AMR 함대는 정반대의 기질을 가졌다. ASRS는 고집쟁이——크레인이 고정된 통로를 메트로놈 같은 택트로 달리며, 분당 정해진 수의 파렛트만 운반하고 하나도 더는 운반하지 않는다. AMR은 자유로운 영혼——돌아다니고, 피하고, 줄을 서지만, 교통량이 늘어나면 택트가 바로 흔들린다. 메트로놈과 자유로운 영혼의 결혼은 각자를 빠르게 만드는 것이 아니었다. 같은 박자에 만나게 하는 것이다.
내가 겪은 함정: ASRS 입고 도크의 40미터
2022년 11월, 중국 쑤저우의 자동차 부품 창고: 네 통로 스태커 크레인식 ASRS, 입고를 먹이는 AMR 12대. 인수 수치는 훌륭해 보였다——크레인당 시간당 90파렛트, AMR은 무적재 시 1.8 m/s. 가동 첫 주, 입고 도크가 막혔다. AMR이 입고 컨베이어 앞에서 줄을 섰다——최대 8대의 로봇이 대기하고, 가장 오래 기다린 놈은 11분이나 멈춰 있었다. 그리고 크레인은? 파렛트가 도착하지 않아 텅 빈 도크를 바라보며 시간의 절반을 놀았다.
범인은 인수 설계였다. AMR이 파렛트를 입고 컨베이어에 내려놓았는데, 컨베이어의 버퍼는 3파렛트뿐이었다. 가득 차면 뒤에 있던 AMR은 그냥 서 있었다. 한편 WCS는 입고 작업을 2–3분의 지연을 두고 발령했다——AMR은 이미 도착했는데, WCS는 아직 크레인에게 수거하라고 지시하지 않은 상태였다. 한쪽 끝은 물리적 병목(버퍼 3파렛트), 다른 한쪽 끝은 정보 지연(늦게 도착하는 작업). 12대 AMR 함대는 실제 능력의 약 60%만 발휘했다.
구출은 세 단계로 이뤄졌다. 첫째, 입고 버퍼를 3파렛트에서 8파렛트로 확장——버퍼는 낭비가 아니라 서로 다른 택트를 번역하는 번역기다. 둘째, 사전 배차: AMR이 인수지점까지 2분 거리에 오면, WCS가 입고 작업을 크레인에 미리 할당해 파렛트 착지 후에 할당하는 대신 기다리게 한다. 셋째, AMR 측의 예약 큐잉——같은 도크행 로봇들을 미리 순서대로 정렬해 8대가 한 지점으로 몰려들지 않게 한다. AMR 대기 시간은 11분에서 40초 미만으로 줄었고, 크레인 가동률은 52%에서 88%로 올랐다.
돈을 잘못된 곳에 쓴 프로젝트를 나는 너무 많이 봐 왔다: AMR이 부족하면 로봇을 늘리고, ASRS가 느리면 크레인을 빠르게 한다. 병목은 이음매에 있지, 기계에 있는 게 아니다.
ASRS AMR 통합의 두 측면: 물리적 인수와 정보적 인수
물리적 측면은 한 장의 표에 들어간다——ASRS AMR 통합 인수 체크리스트다.
| 요소 | 설계 포인트 | 흔한 실수 | 내가 사양을 정한다면 |
|---|---|---|---|
| 인수 위치 | 입고/출고 각각 본선에서 분리된 전용 인수 스테이션 | AMR이 본선 컨베이어에 직접 도킹 | 전용 스테이션 + 버퍼 구역, 본선과 분리 |
| 버퍼 깊이 | 택트 차이 × 변동 계수로 크기 산정 | "보기용" 2–3파렛트 | 6–10파렛트, 최소 5분간의 변동을 흡수 |
| 택트 맞춤 | 느린 쪽에 맞춰 스케줄링 | 빠른 쪽에 맞추고 느린 쪽에게 서두르라고 요구 | 느린 쪽이 택트를 정하고, 빠른 쪽은 15% 여유를 유지 |
| 예외 처리 | 인수 실패는 자동으로 수동 스테이션으로 폴백 | 엔지니어가 올 때까지 데드록 | 3분 타임아웃 후 수동으로 자동 우회 + 알람 |
| 안전 분리 | AMR 구역과 크레인 통로 입구 사이의 견고한 분리 | 노란 페인트선 하나 | 물리적 가드 + 라이트 커튼, AMR은 2 m 이격 |
정보 측면은 WCS 대 AMR 디스패처의 분담——그리고 ASRS AMR 통합에서 재작업 가능성이 가장 높은 부분이다. 내 규칙은 한 문장이다: WCS가 결정하는 것은 화물이 어디로 가는가, AMR 디스패처가 결정하는 것은 차량이 어떻게 가는가——두 시스템은 작업 상태만 교환하고 명령은 교환하지 않는다. WCS는 "파렛트 A를 도크 1에서 지점 B로 이동하라"고 발령하고, 디스패처는 로봇, 경로, 회피를 스스로 선택한다. 상태 콜백에는 네 가지 상태가 필요하고, 하나도 빼서는 안 된다: 수락, 수거 완료, 배송 완료, 예외. 가장 치명적인 패턴은 양쪽 모두 자신이 보스라고 생각하는 것이다——WCS가 각 AMR의 경로를 일일이 조종하려 하고, 디스패처는 제 멋대로 작업 우선순위를 바꾼다. 싸우다가 현장은 데드록에 빠진다.
그러면 택트 속도가 맞지 않을 때 누가 기다리는가? 트레이드오프지만 답은 이렇다: 싼 자산이 비싼 자산을 기다린다. 크레인은 수백만 원대고, AMR은 그 일부——그래서 AMR이 기다린다. 예외는 하나: AMR 함대가 병목일 때(이를테면 6대의 로봇이 4개 통로를 먹이는 경우)다. 이때는 반대로 크레인을 늦춰라. 줄 선 로봇보다 수백만 원짜리 크레인 유휴가 더 비싸기 때문이다. 계산해 보자: 크레인 유휴 한 시간——감가상각, 에너지, 잃어버린 처리량——은 AMR의 약 50회 추가 운송분이다. 먼저 병목을 파악한 뒤에 누가 기다릴지 결정하라. 절대 직감으로 결정하지 마라.

두 번째 함정: 출고의 유령 작업
2024년 3월, 미국 중서부의 3PL: 셔틀식 ASRS가 put-to-wall 분류를 위해 AMR에 공급한다. 출고는 입고보다 교활했다. WCS는 회수 작업을 발령했고, AMR은 이미 움직이기 시작했는데, 그때 고객 서비스가 주문을 취소했다. 셔틀이 파렛트를 출고 도크에 내려놓았고, AMR도 도착했지만, 화물을 원하는 사람이 없었다——유령 작업이다. 피크 때는 하루에 40개가 넘는 고아 파렛트가 쌓였고, 출고 버퍼가 가득 차서 정상적인 출고 이동이 그 뒤에서 막혔다.
근본 원인은 같다——정보의 이음매다. 취소는 WMS까지 도달했지만 WCS나 AMR 디스패처에게는 전파되지 않았다. 해결책: 디스패처와 WCS 사이의 작업 유효성 검사——AMR이 수거하기 30초 전에 작업이 여전히 유효한지 확인하고, 유효하지 않으면 취소하고 로봇을 빈 채로 대기 구역으로 돌려보낸다. 검사는 API 호출 한 번, 수십 밀리초면 된다. 검사를 생략한 대가는 고아 파렛트 40개에 하루 반 시간의 정리 작업이었다. 가동 후 유령 작업은 하루 40개 이상에서 3개 미만으로 줄었다(나머지는 30초의 윈도우 안에서 취소된 것으로, 허용 가능한 손실이다).
마무리를 위한 한 줄
ASRS와 AMR의 결혼에 대한 직관을 거스르는 진실은 이렇다: 병목은 절대 바퀴나 레일에 있는 게 아니라, 정보가 일찍 도착하는가 늦게 도착하는가에 있다. 줄 선 AMR, 유휴 크레인, 유령 작업——어느 하나도 결국은 "알아야 할 사람이 몰랐다"는 이야기다. 로봇을 늘리거나, 크레인을 빠르게 하거나, 버퍼를 확장하겠다고 말하기 전에 인수의 정보 흐름을 먼저 그려라. 순서를 거꾸로 하면 돈은 사라진다.
Lao Mi, 공급망 베테랑(20년) 지음
영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.








