"시스템이 일부러 이러는 겁니까?"

2019년, 나는 Fontana의 이커머스 풀필먼트 센터에서 WES를 도입하고 있었다 — 120,000 평방피트, 하루 8,000건의 주문, 피킹 구역에만 40명이 넘는 인원. 아침 10시 30분, 그날 첫 웨이브가 떨어졌고, 피킹 슈퍼바이저인 Chen이 갓 인쇄한 작업 목록을 흔들며 내 책상으로 와서 종이를 손가락으로 찔렀다.

"UPS 픽업은 2시입니다." 그가 말했다. "그런데 그 주문들이 작업 번호 180번에 앉아 있어요. 그러면서 우리 애들한테는 FedEx 물량을 먼저 피킹하라고요 — 그 트럭은 5시까지 안 움직이는데? UPS 픽업을 놓치면 그건 누구 책임입니까?"

옆 책상의 시스템 관리자 Li가 설명하려 했다. "시스템은 주문 컷오프 시간 기준으로 정렬합니다. 그 FedEx 주문들은 어젯밤에 들어온 거라서요..."

"어젯밤 주문이 급한 게 아닙니다." Chen이 말을 자르고 목록을 책상에 내리쳤다. "그래서 뭡니까 — 컷오프 시간입니까, 픽업 시간입니까?"

그 이후로 나는 그 논쟁의 변형된 버전을 여섯 곳이 넘는 창고에서 봐 왔다. 웨이브는 그날 작업의 주위에 원을 그릴 뿐이다. 그 원 안에서 무슨 일이 일어나는지 — 수백 개의 작업 중 어느 것이 먼저 가는지 — 바로 거기서 WES가 제 값을 한다. 그 순서를 잘못 잡으면 건물은 매일 조용히 돈을 흘린다. 도크에서 공회전하는 트럭, 검수 스테이션의 야근, 지연 배송에 대한 고객 전화.

운전대를 잡는 네 개의 손

첫 번째 손: 캐리어 픽업 시간. 건물에서 가장 단단한 제약이다. 트럭이 오기 전에 주문이 피킹·검수·봉인되지 않으면 그 주문은 내일까지 기다린다. 고객은 하루 늦은 추적 업데이트를 보고, 지원 전화가 불이 난다. 내가 방문한 많은 창고에서 WES의 이 필드는 관리되지 않거나, 관리되더라도 우선순위 규칙에서 실제로 사용되지 않았다. 어느 쪽이든 죽은 무게다.

두 번째 손: 주문 컷오프 시간. 네 손 중 가장 남용되는 손이다. 컷오프가 이르다는 건 고객이 일찍 주문했다는 뜻이다. 급하다는 뜻이 아니다. 어젯밤 11시에 들어온 배치와, 오늘 아침 9시에 들어왔지만 오후 2시 UPS 픽업에 맞춰야 하는 배치 — 어느 쪽이 급한가? 당연히 후자다. 그런데도 많은 시스템은 컷오프 시간 정렬을 기본 규칙으로 달고 나온다. 그날 아침 Chen이 부딪힌 게 바로 그것이었다.

세 번째 손: 피킹 동선. 같은 경로에 있는 작업들을 묶으면 피커의 도보 거리가 줄고 시간당 피킹량이 는다. 이 손 자체는 아무 문제가 없다 — 다만 이건 돈을 아껴주는 손이지, 하루를 구해주는 손이 아니다. 위계를 뒤섞으면 일이 꼬인다. 잠시 후에 자세히.

네 번째 손: 품절 리스크와 고객 등급. 처음부터 말썽인 주문들이 있다. 시스템상 재고가 있다는데 선반이 비어 있는 로케이션, 엄격한 로트·유효기간 요건이 있는 주문, 불만이 사장 책상까지 직행하는 VIP 고객. 이런 주문은 일찍 피킹해서 문제를 조기에 드러내거나, 아예 정규 흐름에서 빼내라. 웨이브 꼬리에 방치하지 마라.

네 손이 다 운전대를 잡고 싶어 한다. WES에는 이 싸움을 정리할 방법이 필요하다.

피커가 핸드헬드 단말기로 선반 로케이션을 스캔해 작업을 확인한다

규칙끼리 싸울 때

현실적인 질문 하나. 주문 A: 어젯밤 주문, 컷오프 시간 가장 빠름, 건물 맨 끝 로케이션에 있음, 캐리어 픽업 오후 5시. 주문 B: 오늘 아침 주문, 컷오프 늦음, 피킹 구역 입구 바로 옆에 있음, 캐리어 픽업 오후 2시. 어느 쪽이 먼저인가?

답은 명백하다: B다. 픽업 시간은 하드 제약이다. 피킹 동선은 소프트 최적화다. 하드 제약은 항상 소프트를 앞선다.

내 방식은 가중 평균이 아니라 티어(계층)다. 가중치는 과학적으로 들리지만 실제로는 죽이다 — "컷오프 시간 40%, 픽업 시간 30%, 동선 30%" — 그렇게 나온 순서는 누구에게도 말이 안 된다. 현장 슈퍼바이저에게는 특히. 티어가 더 단순하다: 먼저 픽업 시간대로 작업을 묶고, 시간대 안에서는 동선 순으로 정렬하고, 품절 리스크가 높은 주문과 VIP 주문은 그 티어 안에서 한 단계만 앞당긴다.

티어에는 또 하나의 장점이 있다: 현장이 읽을 수 있다는 것. 슈퍼바이저가 작업 목록을 열면 "앞으로 2시간 안에 나가는 게 전부 앞에 있다"는 걸 한눈에 알 수 있다. 그래서 실제로 시스템을 따른다. 그렇지 않으면 종이 목록으로 다시 정렬하는 방식으로 돌아가고, WES는 없는 것이나 마찬가지다. 시스템의 순서와 실제 피킹 순서가 완전히 딴판이었던 건물을 나는 한두 곳이 아니라 여럿 봤다.

내가 목격한 두 가지 실패 패턴

첫 번째 죽음: 컷오프 시간으로만 정렬하기. 2021년, 나는 Mira Loma의 3PL을 방문했다. 피크 시즌에는 하루 15,000건을 처리했다. 그들의 WES 우선순위 규칙은 딱 한 줄이었다: 컷오프 시간으로 정렬. 프로모션 날에는 수천 건의 주문이 밤새 밀려들었다 — 전부 느리고 싼 배송 서비스로 — 시스템은 충실하게 그 "이른" 주문들부터 피킹했다. 매일 오후, 당일 픽업에 맞춰야 하는 주문들이 뒤에 쌓였고, 검수 스테이션은 밤 9시를 넘겨 야근했다. 사장은 어느 피크 시즌에 야근 수당으로만 100,000달러 가까이 태웠다고 했다. 규칙을 픽업 시간 기반 티어로 바꾼 뒤 야근은 거의 사라졌다. 그건 시스템 문제가 아니었다. 규칙 문제였다.

두 번째 죽음: 품절 리스크를 우선순위에서 빼놓기. 처음부터 품절 가능성이 높다고 표시된 주문들이 있다 — 선반과 맞지 않는 재고 수량, 빡빡한 유효기간 제약. 그런 주문을 웨이브 뒤쪽에 묻어두면 피커는 그곳에 도착하기 전까지 문제를 모른다: 주문 전체가 멈추고, 예외 처리, 재고 찾기, 주문 분할. 프로세스가 하나씩 이어지고 웨이브 꼬리는 길어진다. 더 나쁜 건 검수 스테이션이 그 주문을 기다리며 배송을 마무리하려 하니, 이미 피킹된 화물도 거기서 같이 기다린다는 것. 해법은 고위험 주문을 앞으로 당겨 문제를 조기에 드러내는 것이다. 오전 10시에 품절을 발견하면 재고를 찾거나 옮길 시간이 아직 있다. 오후 4시에 발견하면 고객에게 사과하는 것밖에 할 수 없다.

두 가지 죽음은 같은 근본 원인을 공유한다: 우선순위 규칙이 결과가 아니라 공정성 — 선입선출 — 을 기준으로 설계되었다는 것. 이게 늦어지면 무슨 일이 생기는가, 로 생각해야 한다.


내일 당장 할 수 있는 일이 하나 있다. WES를 열고, 오늘 릴리스된 웨이브 세 개를 꺼내, 작업 목록을 내려받아 캐리어 픽업 시간으로 정렬한 뒤, 시스템이 실제로 배정한 순서와 비교해 보라. 맞지 않으면 아직 가중치를 만지거나 식을 고치지 마라. 먼저 픽업 시간 마스터 데이터가 애초에 관리되고 있는지 확인하러 가라. 내 경험상 우선순위 실패의 대부분은 지루한 근본 원인으로 귀결된다: 아무도 픽업 시간을 업데이트하지 않는다. 캐리어가 스케줄을 바꿨는데 아무도 입력하지 않았다. 휴일에 트레일러가 한 대 늘었는데 아무도 기록하지 않았다. 데이터를 먼저 바로잡으면 규칙이 의미를 갖기 시작한다. 데이터를 틀리면 어떤 규칙 설정도 구해주지 않는다.

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