3PL 물류시스템 개발기
물류 현장의 경험을 바탕으로 작업자의 편의성과 효율성을 최우선으로 고려해 6년간 3PL 통합 운영 플랫폼을 구축하고 발전시켜 온 개발 과정과 인사이트를 담았다.
유튜브 영상 하나에서 시작된 3PL 물류 시스템 개발기
물류 시스템에서 진짜 중요한 건 기능의 개수가 아니라, 현장 작업자가 그걸 쓰게 되느냐다.
이 프로젝트는 그 사실을 6개월이 아니라 6년에 걸쳐 배운 이야기다.
개발 유튜브를 보고 연락이 왔다
2020년 초, 코로나가 한창이던 시기였다.
당시 개발과 관련된 유튜브 채널을 운영하고 있었는데, 그 영상을 보고 한 3PL 물류업체 대표에게 연락이 왔다.
기존에 쓰던 시스템이 너무 불편한데 새로운 시스템을 만들 수 있겠냐는 내용이었다.
불편한 건 알지만, 어떻게 풀어야 하는지는 몰랐다
처음에는 단순한 상담 정도로 생각했다.
하지만 이야기를 나누다 보니 대표는 무엇이 불편한지는 명확하게 알고 있었지만, 그것을 시스템으로 어떻게 풀어야 하는지는 정리되지 않은 상태였다.
오히려 그 점이 나에게는 기회였다.
개발 이야기보다 물류 이야기가 더 잘 통했다
개발자이기도 했지만, 그보다 먼저 홈쇼핑 물류 업계에서 약 10년 정도 근무한 경험이 있었다.
입고, 출고, 재고 관리, 주문 처리까지 물류센터의 전체 흐름을 이미 알고 있었기 때문에 대표가 설명하는 업무를 별도의 설명 없이도 이해할 수 있었다.
아마 그 부분이 나를 선택한 가장 큰 이유였던 것 같다.
멈추면 안 되는 시스템을 갈아끼우는 일
이번 프로젝트는 프로그램 하나를 새로 만드는 일이 아니었다.
이미 운영 중인 3PL 업체의 기존 시스템을 새로운 시스템으로 완전히 교체하는 프로젝트였다.
여러 고객사의 주문을 관리하고 입고부터 출고, 택배 발송까지 모든 업무가 이 시스템 하나로 돌아가고 있었기 때문에 작은 실수 하나도 허용되지 않는 환경이었다.
6개월 동안 미팅만 했다
현장에서 사용하는 업무를 하나씩 분석하고 시스템으로 옮겨 나갔다.
처음에는 단순한 주문 관리 정도를 생각했지만, 개발이 진행될수록 기능은 계속 늘어났다.
OMS를 구축해 고객사의 주문을 관리하고 입고와 출고, 재고 관리, 엑셀 업로드 기능을 만들었다.
대한통운과 직접 연동해 운송장을 출력하고 회수 업무까지 자동화했으며, 이후에는 해외 출고를 위해 일본 KSE와 Shopee 같은 플랫폼과도 연동을 진행했다.
기능보다 중요했던 건 작업 동선이었다
기능이 늘어나는 동안 계속 붙잡고 있던 기준은 작업자의 편의성이었다.
기존 택배 프로그램에서는 단순히 운송장만 출력할 수 있었다. 종이에 찍히는 건 받는 사람 정보뿐이고, 물건이 어디 있는지는 작업자가 알아서 찾아야 했다.
그래서 운송장 자체를 커스터마이징했다.
송장만 보고 어디로 갈지 알 수 있게
상품의 보관 위치(Location)와 작업에 필요한 정보를 운송장에 함께 출력하도록 구성했다.
작업자가 송장만 보고도 어디에서 상품을 가져와야 하는지 바로 알 수 있게 만든 것이다.
사람의 기억이 아니라 시스템이 검증하게
출고 검수 시스템도 새롭게 구축했다.
운송장을 스캔하면 검수 화면이 열리고, 상품 바코드를 하나씩 스캔하면서 수량을 자동으로 확인하는 방식이었다.
출고가 맞았는지를 사람의 기억이 아니라 시스템이 판단하도록 바꿨다.
가장 긴장됐던 하루
개발을 마치고 드디어 시스템을 오픈하는 날.
그날이 프로젝트 기간 동안 가장 긴장됐던 순간이었다.
이미 여러 고객사의 물류가 돌아가고 있는 상황에서 기존 시스템을 새 시스템으로 교체해야 했기 때문이다.
문제가 생기면 물류가 멈출 수도 있다는 부담 때문에 서버를 전환하는 순간까지 긴장을 늦출 수 없었다.
현장은 새 시스템을 반기지 않았다
대표는 새로운 시스템을 적극적으로 도입하려 했지만, 현장의 실무자들은 처음에는 반응이 좋지 않았다.
익숙한 시스템을 버리고 새로운 프로그램을 사용하는 것은 누구에게나 부담이기 때문이다.
잘 만든 시스템이라고 해서 바로 쓰이는 게 아니라는 걸 이때 알았다.
반발을 넘긴 건 기능이 아니라 피드백이었다
대표가 프로젝트를 강하게 추진해 주었고, 무엇보다 현장의 의견을 계속 들으며 시스템을 개선해 나갔다.
실무자들의 피드백은 대부분 기능 개선으로 이어졌다.
그렇게 시스템은 점점 더 현장에 맞는 형태로 바뀌어 갔다.
안정되니까 다른 문제가 나왔다
운영이 자리를 잡으면서 새로운 문제가 나타났다.
데이터가 쌓일수록 속도가 느려지기 시작한 것이다.
물류 시스템은 데이터가 하루도 빠짐없이 늘어나는 구조라 시간이 지날수록 상황이 나빠졌다.
파티셔닝만으로는 부족했다
처음에는 데이터베이스 파티셔닝으로 해결했다.
그것만으로는 부족했다.
결국 월 단위로 테이블을 분리하는 구조까지 적용했고, 현재는 속도 문제를 대부분 해결한 상태다.
DAS와 분할 피킹
이후에도 시스템은 계속 발전했다.
다스(DAS) 시스템을 도입했고, 분할 피킹 기능을 추가해 여러 주문을 더 효율적으로 처리할 수 있도록 개선했다.
포장 과정을 영상으로 남기기 시작했다
최근에는 검수 시스템을 한 단계 더 발전시켰다.
운송장을 스캔하는 순간부터 포장 작업을 자동으로 녹화하고, 영상은 사내 NAS에 로컬로 업로드해 바로 조회할 수 있도록 구현했다.
고객이 오배송이나 누락을 문의하면 당시 포장 영상을 바로 확인할 수 있다.
출고 과정을 사람의 기억이 아니라 데이터로 증명하게 된 것이다.
프로그램을 만든 게 아니었다
돌이켜보면 이 프로젝트는 프로그램 하나를 만든 일이 아니었다.
현장의 문제를 하나씩 해결하다 보니 자연스럽게 하나의 3PL 통합 운영 플랫폼으로 성장했다.
기능 목록을 먼저 정해놓고 만들었다면 이런 모양이 나오지 않았을 것이다.
아직 끝나지 않은 프로젝트
지금도 새로운 기능을 추가하고, 현장의 요구사항을 반영하며 꾸준히 유지보수를 진행하고 있다.
오픈 첫날 실무자들이 새 시스템을 반기지 않았던 걸 생각하면, 결국 이 시스템을 여기까지 끌고 온 건 내 설계가 아니라 그들의 불평이었다.
좋은 물류 시스템은 한 번 만들고 끝나는 프로그램이 아니라, 현장과 함께 계속 성장하는 플랫폼이라고 믿는다.