핵심부터: RCS 플리트를 20대에서 80대 AMR로 확장하는 일은 생산을 멈추지 않고도 가능하다. 단, 차량 한 대도 추가하기 전에 네트워크와 맵, 충전을 먼저 확장했을 때만 그렇다. 새 로봇을 가동 중인 플리트에 그대로 밀어 넣으면 새벽 3시에 장애 디버깅을 하게 된다.
나는 이게 망가지는 걸 세 번이나 봤다. 시나리오는 절대 바뀌지 않는다. RCS 확장에서 가장 위험한 건 새 로봇이 아니다. 바로 옛날 맵이다. 20대 시절에 잘 돌아가던 통행금지 구역과 교통 규칙이 80대가 되면 데드락 기계로 변한다. 20대 시절 비공식 일방통행 차로로 잘 흐르던 좁은 통로는, 80대가 되면 교차로에서 로봇 여섯 대가 꼼짝 못 하는 대치 상황이 되어 인간 슈퍼바이저가 제때 풀 수 없게 된다. 모두 새 차량만 보지만, 베테랑은 맵을 본다. 이것이 플리트 전환에서 가장 직관에 반하는 교훈이다. 하드웨어는 쉬운 부분이고, 맵이 폭탄이다.
두 프로젝트가 이걸 뼈아프게 가르쳐 줬다.
2024년 9월, 쑤저우의 3C 액세서리 창고에서 플리트를 24대에서 72대 AMR로 늘려 달라는 의뢰를 받았다. 조건은 딱 하나: 주간 주문이 단 한 건도 멈추면 안 된다는 것. 내 계획은 새 차량을 처음 48시간 동안 실제 태스크에서 빼 두는 것이었다. 맵을 익히기 위해 빈 루트를 도는 "섀도우 플리트"를 돌린 뒤 단계적으로 올렸다. 1주차 25%, 2주차 50%, 상태 지표가 안정된 뒤에야 전체 투입. RCS 전환 전체는 2주. 다운타임 제로. 타임라인은 이랬다: 새 차량은 9월 2일 도착, 48시간 섀도우 플리트는 9월 4~5일 가동, 18대의 1차 웨이브가 9월 9일 실제 태스크를 받았고, 플리트는 9월 16일 50% 도달, 오후 5시 상태 보고서가 다음 단계를 판단했다. 2주 뒤 72대 전부 가동되었고, 주간 주문의 정시율은 96%에서 98%로 오히려 좋아졌다.
2023년, 캘리포니아의 식품 유통 센터는 정반대로 했다. 고객사는 40대의 새 차량을 한 번에 RCS에 연결하고 충전을 한 번도 확장하지 않았다. 그날 저녁 새 봇들이 충전기 앞에 줄을 서며 기존 플리트의 충전 시간을 빼앗았다. 다음 날 아침 6시, 플리트 전체가 방전됐다. 전화에서 오너가 한 말은 그대로 이렇다. "로봇을 늘렸지, 문제를 늘린 게 아니야." 사후 분석에서 나온 충전기 대 차량 비율은 1:18. 안전선에 한참 못 미쳤다. 새 차량이 도착하기 전에 충전을 먼저 경고했지만, 고객사는 "일단 돌려 보자"고 했다. 실제로 돌아가기 시작한 건 충전 대기 줄이었다.
살아남는 플리트 확장은 네 단계를 밟고, 각 단계마다 확인할 수 있는 산출물이 있다.
1단계: 네트워크와 맵부터 (전환 2~4주 전)
- 네트워크에 부하를 걸어라. 80대분의 RCS 하트비트와 태스크 디스패치는 20대 때의 4배가 넘는 트래픽을 만들고, Wi-Fi 로밍 핸드오프 포인트는 반드시 다시 테스트해야 한다. 내 방식은 이렇다: 새 차량이 도착하기 전에 기존 20대에 시뮬레이션 트래픽을 더해 액세스 포인트가 포화될 때까지 밀어붙이고 패킷 손실을 지켜본다. RCS 하트비트 손실이 1%를 넘으면, 새 차량 얘기를 꺼내기 전에 액세스 포인트를 추가한다.
- 맵을 다시 그려라. 일방통행 차로, 통행금지 구역, 충전 구역은 전부 80대 규모에 맞춰 다시 그린다. 좁은 통로는 일방통행으로, 교차로에는 양보 지점을, 충전은 모서리에서 메인 통로로 옮긴다. 옛날 맵을 그대로 쓰는 건 실패 통지서나 다름없다. 20대용으로 만든 교통 규칙은 80대의 교통 밀도를 감당하지 못한다.
- RCS 파라미터를 다시 튜닝한다. 하트비트 타임아웃과 태스크 재시도 간격은 20대 시절에 설정된 것으로 80대용으로 재튜닝이 필수다. 내 방식: 하트비트 타임아웃을 먼저 20% 느슨하게 풀었다가, 상승 곡선이 안정되면 다시 조인다. 모든 파라미터 변경은 변경 로그에 기록한다. 누가, 무엇을, 롤백 값은 무엇인지. 그리고 전환 전날 체크리스트에서 하나씩 확인한다.
2단계: 충전 인프라 (1~2주 전)
실제 프로젝트에서 내가 본 충전기 대 차량 비율은 대개 1:8에서 1:10 사이에 들어간다. 태스크 밀도가 높은 창고는 1:6 쪽으로 당겨야 한다. 배터리 가동 시간과 태스크 강도에 달렸다. 캘리포니아 현장이 바로 이 지점에서 쓰러졌다. 새 충전기는 일주일 일찍 전원을 올리고 충전 곡선이 건강한지 확인한다. 확장 기간에는 충전 시간을 분산시킨다. 새 차량의 충전을 기존 플리트와 30분 엇갈리게 해서 충전 구역이 통로를 막는 대기 줄로 변하지 않게 한다.
3단계: 단계적 증설 (1~2주)
새 차량은 세 웨이브에 나눠 플리트에 투입한다. 1차 웨이브는 새 차량의 25%, 실제 태스크를 건드리기 전에 48시간 빈차로 맵을 익힌다. 2차 웨이브에서 플리트를 50%까지 올리면서 세 지표를 본다: 평균 태스크 완료 시간, 데드락 건수, 충전 대기 시간. 어느 것도 악화되지 않아야 전체 투입. 이 기간에는 매일 플리트 상태 보고서를 내고, 다음 웨이브는 현장 책임자의 승인이 떨어진 뒤에만 시작한다. 단계적 증설은 보통 1~2주, 태스크가 복잡한 대형 현장은 3주까지 늘어날 수 있지만 괜찮다. 롤백 트리거를 글로 적어 관제실 벽에 붙여라. 하루에 데드락 3건 초과, 평균 태스크 완료 시간이 베이스라인보다 15% 느림, 충전 대기 20분 초과. 하나라도 터지면 다음 웨이브를 멈추고 현재 웨이브를 되돌린다. 기준치는 벽에, 누군가의 머릿속에 있는 게 아니다.
전환 전날 체크리스트
- 네트워크: 액세스 포인트가 전부하 스트레스 테스트 통과, RCS 하트비트 손실 1% 미만
- 맵: 일방통행 차로와 통행금지 구역을 80대 규모로 다시 그림, 새 차량이 전 루트를 빈차로 주행 완료
- 충전: 새 충전기를 통전하고 7일간 테스트 완료, RCS에 시차 충전 설정 완료
- 교통 규칙: 데드락 발생 시 수동 인계 SOP 훈련 완료, 우선 통행 순위를 업데이트
- 롤백 계획: 각 웨이브마다 롤백 포인트 정의, 새 차량을 플리트에서 빼서 수동 운영으로 복귀 가능
- 증설 지표: 태스크 시간·데드락·대기 시간의 베이스라인을 기록, 기준치 초과 시 즉시 롤백

플리트 전환이 실패하는 네 가지 전형적 패턴
- 한 번에 전부 투입. 한 방에 끝내는 RCS 확장은 없다. 한밤에 수십 대를 투입하려던 프로젝트를 두 번 봤는데, 둘 다 해 뜨기 전에 터졌다.
- 맵 다시 그리기 생략. 20대 시절의 통행금지 로직은 80대가 되면 데드락 공장이 된다.
- 충전을 뒷전으로. 충전기보다 차량이 먼저 오면, 충전 대기 줄이라는 이름의 로봇 주차장이 생길 뿐이다.
- 롤백 계획 없음. 상승 과정에 잘못된 웨이브를 되돌릴 방법이 없으면, 새벽 2시의 선택지는 앉아서 버티는 것뿐이다.
기억해 두자: 플리트 확장은 "차량이 많다"고 이기는 게 아니다. "더 많은 차량을 감당할 수 있는 맵과 네트워크, 충전"으로 이긴다. 이 세 가지를 먼저 확장하고 차량은 나중에 더하라. 그러면 다운타임 제로는 자연스러운 결과다. 반대로 하면, 한밤중 전화가 당신을 찾아온다.
Lin Xiao, WMS 구축 컨설턴트 지음
영어판 번역본입니다. 내용이 다를 경우 영어판을 우선합니다.





