핵심부터: 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주 전)

  1. 네트워크에 부하를 걸어라. 80대분의 RCS 하트비트와 태스크 디스패치는 20대 때의 4배가 넘는 트래픽을 만들고, Wi-Fi 로밍 핸드오프 포인트는 반드시 다시 테스트해야 한다. 내 방식은 이렇다: 새 차량이 도착하기 전에 기존 20대에 시뮬레이션 트래픽을 더해 액세스 포인트가 포화될 때까지 밀어붙이고 패킷 손실을 지켜본다. RCS 하트비트 손실이 1%를 넘으면, 새 차량 얘기를 꺼내기 전에 액세스 포인트를 추가한다.
  2. 맵을 다시 그려라. 일방통행 차로, 통행금지 구역, 충전 구역은 전부 80대 규모에 맞춰 다시 그린다. 좁은 통로는 일방통행으로, 교차로에는 양보 지점을, 충전은 모서리에서 메인 통로로 옮긴다. 옛날 맵을 그대로 쓰는 건 실패 통지서나 다름없다. 20대용으로 만든 교통 규칙은 80대의 교통 밀도를 감당하지 못한다.
  3. 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 훈련 완료, 우선 통행 순위를 업데이트
  • 롤백 계획: 각 웨이브마다 롤백 포인트 정의, 새 차량을 플리트에서 빼서 수동 운영으로 복귀 가능
  • 증설 지표: 태스크 시간·데드락·대기 시간의 베이스라인을 기록, 기준치 초과 시 즉시 롤백

창고 통로에서 가동 중인 AMR 플리트

플리트 전환이 실패하는 네 가지 전형적 패턴

  1. 한 번에 전부 투입. 한 방에 끝내는 RCS 확장은 없다. 한밤에 수십 대를 투입하려던 프로젝트를 두 번 봤는데, 둘 다 해 뜨기 전에 터졌다.
  2. 맵 다시 그리기 생략. 20대 시절의 통행금지 로직은 80대가 되면 데드락 공장이 된다.
  3. 충전을 뒷전으로. 충전기보다 차량이 먼저 오면, 충전 대기 줄이라는 이름의 로봇 주차장이 생길 뿐이다.
  4. 롤백 계획 없음. 상승 과정에 잘못된 웨이브를 되돌릴 방법이 없으면, 새벽 2시의 선택지는 앉아서 버티는 것뿐이다.

기억해 두자: 플리트 확장은 "차량이 많다"고 이기는 게 아니다. "더 많은 차량을 감당할 수 있는 맵과 네트워크, 충전"으로 이긴다. 이 세 가지를 먼저 확장하고 차량은 나중에 더하라. 그러면 다운타임 제로는 자연스러운 결과다. 반대로 하면, 한밤중 전화가 당신을 찾아온다.

Lin Xiao, WMS 구축 컨설턴트 지음

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