사례 연구

트럭을 멈추지 않고 12년 된 창고 시스템을 현대화하기

한 유통업체는 일부 직원보다 더 오래된 소프트웨어로 창고 전체를 운영하고 있었습니다. 일괄 전환도, 배송 누락도 없이 그것을 하나씩 교체한 방법과, 다시 똑같이 할 일을 소개합니다.

Have a nice dayHave a nice day읽는 데 9분
트럭을 멈추지 않고 12년 된 창고 시스템을 현대화하기

작은 회사에서 가장 위험한 소프트웨어는 작동하는 소프트웨어입니다. 모두가 불평하는 버그투성이 도구가 아닙니다. 그것은 결국 교체됩니다. 위험한 것은 아무도 좋아하지 않지만 모두가 의존하는 12년 된 시스템입니다. 구석의 베이지색 본체에서 부팅되고, 팀의 절반이 채용되기도 전부터 창고를 돌려온 그것 말입니다. 작동합니다. 거의 작동하지 않게 되는 그날까지요. 그제서야 모두가 동시에, 회사 전체가 그 위에서 위태롭게 균형을 잡고 있었음을 깨닫습니다.

이것은 그런 시스템 중 하나와, 우리가 그것을 어떻게 교체했는지에 관한 이야기입니다. 고객사는 지역 유통업체로, 수천 개의 제품 라인, 창고 한 동, 현장과 사무실을 합쳐 약 30명입니다. 익명 처리하고 수치는 반올림했지만, 프로젝트의 형태는 실제 있었던 그대로입니다. 손대기 두려운 노후 시스템을 안고 계시다면, 제대로 된 현대화가 내부에서 어떻게 보이는지는 대체로 이와 같습니다.

이 이야기에는 영웅적인 재작성도, 스위치를 켜자 모든 것이 새로워진 주말도 없습니다. 핵심은——그것을 성공시킨 것은——극적인 일이 전혀 일어나지 않았다는 점입니다. 트럭은 계속 짐을 실었습니다. 창고는 발밑에서 바닥이 옮겨지는 것을 거의 눈치채지 못했습니다. 그것이 레거시 작업의 목표이며, 그 이유를 이해할 가치가 있습니다.

상황: 한 사람의 기억으로 지탱되던 시스템

창고는 이미 오래전에 떠난 개발자가 2013년경에 만든 맞춤형 시스템으로 돌아가고 있었습니다. 핵심 업무——재고 추적, 피킹 리스트 출력, 주문 출고——는 해냈고, 평범한 날에는 그것을 무난히 해냈습니다. 문제는 사실 소프트웨어 자체가 아니었습니다. 문제는 그것을 쓸 만하게 유지하려고 주변에 자라난 모든 것이었습니다.

십여 년에 걸쳐 팀은 청테이프로 그림자 시스템을 조용히 쌓아 올렸습니다. 소프트웨어가 틀리는 재고 수량을 위한 스프레드시트, 그 첫 번째를 현실과 대조하는 두 번째 스프레드시트, 시스템이 표현하지 못하는 품목을 창고 책임자가 알리기 위한 WhatsApp 그룹, 그리고 신입이 외워야 하는 우회책 인쇄 바인더. 이 중 무엇도 한곳에 적혀 있지 않았습니다. 그것들은 운영 매니저의 머릿속에 있었습니다. 그곳에서 14년 일한, 침착한 50대 여성으로, 기능적으로 그녀 자신이 곧 문서였습니다.

사장이 처음 우리에게 전화한 것은 시스템이 멈춰서가 아니었습니다. 그녀가 2년 뒤 은퇴하고 싶다고 밝혔고, 그가 계산해 보니 그녀가 떠나는 날 창고가 실제로 돌아가는 방식의 상당 부분이 그녀와 함께 문밖으로 나가버린다는 것을 깨달았기 때문입니다. 이것은 어떤 기술적 고장보다도 흔한 현대화의 계기입니다. 시스템이 망가지는 것이 아니라, 그것을 기워온 사람들이 영원히 있지는 않으리라는 깨달음 말입니다.

위험은 레거시 시스템이 아니었습니다. 위험은 그것을 살아 있게 하는 지식이 은퇴를 원하는 한 사람 안에 있었다는 점이었습니다.
사장이 처음에는 소리 내어 말하지 못한 것

모두가 더 이상 알아차리지 않게 된 증상들

처음 이틀을 그저 창고가 돌아가는 모습을 지켜보며 보내자, 옛 시스템의 비용이 곳곳에 있었습니다——그러나 너무 당연해져서 아무도 더는 그것을 문제로 지적하지 않았습니다. 재고 수치는 예측 가능한 폭만큼 틀린다고 신뢰되었기에, 큰 주문은 모두 '혹시 몰라서' 수작업 실물 확인을 거쳤습니다. 신입은 쓸모 있어지기까지 몇 주가 걸렸습니다. 업무의 많은 부분이 기록되지 않은 구전이었기 때문입니다. 그리고 시스템은 더 이상 패치할 수 없을 만큼 오래된 운영체제 위에서, 사장이 속으로 '언제 터져도 이상하지 않은 보안 사고'라고 알고 있던 네트워크 위에서 돌아가고 있었습니다.

  • 재고 정확도는 80% 안팎을 맴돌았기에, 직원들은 중요한 것은 모두 손으로 다시 셌습니다——매일 몇 시간씩, 조용히.
  • 피킹 리스트 로직은 현재 창고 배치를 감당하지 못해, 피커들은 화면이 아니라 바인더가 일러주는 동선을 걸었습니다.
  • 월말 재고 대사에는 두 사람이 사흘의 대부분을 들였습니다.
  • 소프트웨어의 관리 측면을 돌릴 수 있는 기기는 단 한 대뿐이었고, 그것이 고장 나면 누구에게도 명확한 계획이 없었습니다.
  • 2019년에 회사가 추가한 온라인 주문 채널에는 아무것도 연결되지 않아, 그 주문들은 손으로 다시 입력되었습니다.
구식 소프트웨어를 돌리는 오래된 베이지색 데스크톱 컴퓨터가 있는 창고 사무실 한구석. 손으로 쓴 포스트잇, 우회책 인쇄 바인더, 커피 머그에 둘러싸여 있고, 따뜻한 다큐멘터리풍 조명
진짜 시스템은 화면 위에 있지 않았습니다——포스트잇 속, 바인더 속, 그리고 한 사람의 기억 속에 있었습니다.

우리가 의도적으로 하지 않은 것

뻔한 수——많은 벤더가 제안했을 수——는 큰 기성 창고 관리 플랫폼을 사서, 한 주말에 모든 것을 옮기고, 월요일 아침에 옛 시스템을 끄는 것입니다. 우리는 그 방식이 잘못되는 것을 충분히 많이 봐서, 이런 회사에는 그것을 제안하지 않습니다. 일괄 전환은 옛 시스템을 완전히 이해하고 있다고 전제합니다. 십 년치 문서화되지 않은 우회책이 있다면 아무도 이해하지 못했습니다——그것을 돌리던 사람들조차도요.

두 번째 솔깃한 수는 처음부터 완전히 맞춤 재작성하는 것입니다. 옛 시스템이 하는 모든 것을 가져와, 깔끔하게 다시 짓고, 새것을 내놓는 것이죠. 책임감 있게 들리지만, 이는 회사가 얼어붙은 채 대체품을 기다리는 동안 1년과 큰 예산을 태우는 고전적인 방법입니다. 대체품은 계속 미뤄지고요. 문제는 재작성이 출시되기 전에 모든 별난 동작을 재현해야 한다는 점입니다——사라지고 나서야 누구나 '그게 지지대였구나' 깨닫는, 아무도 기억하지 못하는 별난 동작까지 포함해서요.

그래서 우리는 둘 다 하지 않았습니다. 옛 시스템을 허물 대상이 아니라, 둘러싸고 천천히 교체할 대상으로 다루었습니다——한 번에 하나의 기능씩, 옛 시스템을 전 과정 내내 안전망으로 아래에서 계속 돌리면서요. 화려하지 않습니다. 그리고 이것이 안정적으로 작동하는 유일한 버전이기도 합니다.

접근법: 옛 시스템을 폭파하지 말고, 졸라 죽여라

개발자들 사이에 이 패턴에는 익숙한 이름이 있습니다——'스트랭글러(목 졸라 죽이는)' 접근법으로, 나무를 휘감아 스스로 설 수 있게 될 때까지 자라다가 원래 나무가 조용히 사라지는 덩굴에서 따온 이름입니다. 옛 시스템을 한 번에 교체하지 않습니다. 그 주위에 새 부분을 짓고, 실제 업무를 하나씩 그쪽으로 돌리며, 옛 시스템을 줄여 나갑니다. 남은 것이 아무도 숨을 죽이지 않고 끌 수 있을 만큼 작아질 때까지요.

이 창고의 경우, 그것은 순서를 미리 합의하는 것을 뜻했습니다. 어느 기능을 먼저 떼어낼지, 어느 것을 마지막까지 남길지, 그리고——결정적으로——모든 단계에서, 새 부분이 말썽을 부리면 같은 날 옛 방식으로 곧장 되돌아갈 수 있다는 규칙이었습니다. 어떤 단계도 맨 마지막까지는 돌이킬 수 없는 지점이 되도록 허용되지 않았습니다. 바로 그 하나의 규칙이 사장을 잠들게 했고, 창고 직원들이 프로젝트에 맞서 버티는 대신 신뢰하게 만들었습니다.

  1. 1
    시스템이 실제로 무엇을 하는지 지도화하라
    현장과 사무실을 3주간 따라다니며 실제 업무 흐름을 문서화했습니다——모든 스프레드시트와 바인더 우회책을 포함해서요. 우리는 최초 사양서가 묘사한 시스템이 아니라, 실제로 존재하는 시스템을 적었습니다.
  2. 2
    옮기기 전에 데이터를 정리하라
    전체 실물 재고 조사를 실시하고 그에 맞춰 제품 데이터베이스를 정리했습니다. 더러운 데이터를 새 시스템으로 옮기면 더 빠른 틀린 답을 줄 뿐입니다——그래서 이것은 어떤 새 소프트웨어도 데이터에 손대기 전에 이루어졌습니다.
  3. 3
    가장 고통스러운 부분을 먼저 교체하라
    새 재고 추적·집계 모듈을 만들어 옛것과 병행으로 돌렸고, 수치가 꼬박 한 달 현실과 일치한 뒤에야 그것을 신뢰했습니다.
  4. 4
    옛 시스템이 무시한 채널을 연결하라
    다음으로 온라인 주문 채널을 새 재고 데이터에 직접 연결해, 2019년부터 조용히 존재하던 수작업 재입력을 없앴습니다.
  5. 5
    나머지를 떼어낸 뒤, 옛 핵심을 폐기하라
    피킹, 보고, 대사가 하나씩 옮겨졌습니다. 옛 시스템에서 진짜 업무가 거의 아무것도 돌지 않게 되었을 때, 마침내 그것을 껐습니다——그때쯤이면 이미 아무 일도 아닌 것이었죠.
오래된 레거시 박스 주위로 새로운 현대적 소프트웨어 계층이 자라나 그것을 점차 대체하는 모습을 보여주는 깔끔한 도식 스타일 일러스트. 작업이 하나씩 재라우팅되는 화살표가 있고, 편집 디자인풍의 플랫 스타일
둘러싸고, 돌려보내고, 줄이기: 옛 시스템은 진짜 업무가 거의 아무것도 의존하지 않게 될 때까지 안전망으로 계속 돌아갔습니다.

정말로 어려웠던 부분

이를 순조로웠다고 내보이는 것은 정직하지 못한 일입니다. 기술적 작업은 쉬운 부분이었습니다. 어려운 부분은 사람과 절차에 관한 것이었고, 그것은 거의 모든 레거시 프로젝트에서 똑같이 어려운 부분입니다.

기능을 망가뜨린, 문서화되지 않은 규칙

새 재고 모듈을 병행으로 돌린 지 2주째, 한 제품 카테고리에서 수치가 어긋났고 왜 그런지 보이지 않았습니다. 하루를 파고든 끝에, 운영 매니저가 거의 지나가듯 말했습니다. 특정 벌크 품목은 개가 아니라 팰릿 단위로 세며, 옛 시스템에는 십 년간 아무도 문서화하지 않은 숨은 환산이 박혀 있다고요. 어떤 사양서에도 없었습니다. 그것은 오직 그녀의 머릿속과 바인더 안에만 있었습니다. 코드만으로는 결코 찾지 못했을 것입니다——두 시스템을 나란히 돌리며 왜 서로 다른지 묻는 것으로만 찾을 수 있었습니다. 병행 운영을 지지하는 논거 전부가 이 하나의 일화에 담겨 있습니다.

현장의 마음을 얻기

창고 직원들은 선의였지만 하루를 더 나쁘게 만든 '개선'을 한두 번 겪어낸 터라, 합당한 의심으로 프로젝트를 맞이했습니다. 우리는 그것을 발표로 맞서지 않았습니다. 가장 큰 소리로 불평하는 피커를 골라 한나절 그의 옆에 앉아, 그가 실제로 현장을 어떻게 걷는지를 중심으로 피킹 화면을 다시 만들었습니다. 그가 휴게실에서 새 시스템을 옹호하기 시작하자, 나머지가 뒤따랐습니다. 레거시 프로젝트에서는 가장 까다로운 비판자를 설득하면, 그 사람이 최고의 옹호자가 됩니다——그리고 그것은 사내 공지로는 살 수 없습니다.

우리는 새 시스템이 더 낫다고 단 한 번도 주장하지 않았습니다. 수치가 한 달 동안 현실과 일치하게 한 뒤, 가장 목소리 큰 회의론자가 우리 대신 말하게 했습니다.
도입이 실제로 어떻게 받아들여졌는가

1년 뒤의 성과

우리는 번지르르한 전후 비교 수치를 경계합니다. 회사마다 측정 방식이 다르고, 귀사에서는 수치도 달라질 것이기 때문입니다. 그러니 이것을 한 프로젝트에서 나온 정직하고 반올림된 수치로, 약속이 아니라 효과의 형태를 보여주는 것으로 여겨 주십시오. 핵심은 어느 한 지표보다, 무엇이 더 이상 두렵지 않게 되었는가에 있습니다.

지표효과
재고 정확도약 80%약 98%수작업 이중 확인이 대부분 사라짐
월말 대사약 3일, 2명약 반나절, 1명매달 대략 일주일치 노동이 되돌아옴
손으로 재입력하던 온라인 주문모든 건0건채널이 이제 재고를 직접 공급
신입이 쓸모 있어지는 시간몇 주며칠구전이 이제 소프트웨어 안에
취약한 관리 기기 한 대있음없음어디서나 작동, 제대로 백업
한 창고 현대화의 12개월에 걸친, 반올림된 예시 수치.

사장이 가장 마음 쓴 수치는 어떤 그래프에도 없었습니다. 그것은 운영 매니저가 실제로 은퇴했을 때——알고 보니 예정보다 몇 달 이른 시점이었습니다——창고가 흔들리지조차 않았다는 점이었습니다. 한때 그녀의 머릿속에 살던 지식은, 이제 누구든 며칠이면 익힐 수 있는 시스템 안에 살게 되었습니다. 프로젝트 전체의 본래 이유가 조용히, 완전히 해결된 것입니다.

직원들이 휴대용 스캐너와 태블릿을 사용하는 밝고 현대적인 창고. 벽면 화면에는 명확한 실시간 재고 대시보드가 표시되어 있고, 차분하고 정돈되어 있으며, 따뜻한 자연광
1년 뒤: 같은 창고, 같은 팀. 그러나 지식은 이제 한 사람의 기억이 아니라 시스템 안에 깃들어 있습니다.

이런 시스템을 안고 계시다면

노후 핵심 시스템을 가진 대부분의 경영자는 두 가지를 동시에 느낍니다. 두는 것은 위험하고, 교체하는 것은 두렵다는 것이죠. 둘 다 사실입니다. 잘못은 두 번째 두려움이 이기게 두는 것입니다. 옛 시스템의 위험은 가만히 있지 않고——해마다 조용히 커집니다. 그것을 이해하는 사람들이 떠날 때가 가까워지고, 그것이 돌아가는 플랫폼이 지원에서 점점 멀어지면서요.

'그냥 두고 기도하기'와 '회사를 대규모 재작성에 걸기' 사이에서 고를 필요는 없습니다. 중간 길——그것을 둘러싸고, 한 번에 한 부분씩 교체하며, 새것이 신뢰를 얻을 때까지 옛것을 그물로 남겨두기——은 더 느리고 훨씬 덜 영웅적입니다. 그러나 그것은 트럭을 멈추지 않는 버전이기도 합니다. 이 이야기 전체에서 하나만 가져가신다면, 바로 그것입니다.

손대기 두려운 옛 시스템을 갖고 계신가요?

귀사의 창고나 재고 관리가 더는 온전히 신뢰할 수 없는——혹은 더는 온전히 이해할 수 없는 소프트웨어로 돌아가고 있다면, 함께 들여다봅시다. 그것이 실제로 무엇을 하는지 지도화하고, 한 부분씩 진행하는 가장 위험이 낮은 현대적 교체의 길을 보여드리겠습니다.

창고 시스템을 현대화하는 방법 보기

자주 묻는 질문

정말로 다운타임 없이 창고 시스템을 교체할 수 있나요?
예——그것이 하룻밤 전환이 아니라 한 부분씩 진행하는 접근법의 전부입니다. 옛 시스템은 안전망으로 계속 돌아가고, 그동안 각 새 기능이 만들어지고 병행으로 테스트되며, 현실과 일치한 뒤에야 신뢰됩니다. 맨 마지막까지, 창고가 옛 방식으로 되돌아갈 수 없는 순간은 없습니다. 이렇게 하면 현장은 마이그레이션을 거의 알아차리지 못합니다.
그냥 기성 창고 관리 시스템을 사면 안 되나요?
때로는 그것이 정답이며, 그렇다면 그렇게 말씀드립니다. 그러나 기성 플랫폼은 귀사의 프로세스가 자사의 전제에 들어맞는다고 가정합니다. 십 년치 고유하고 문서화되지 않은 우회책을 가진 회사는 표준 제품이 80%는 맞고 나머지 20%에서 부딪힌다는 것을 흔히 발견합니다——바로 중요한 그 부분에서요. 이 결정은 기본값에 맡기지 말고 의도적으로 내릴 가치가 있습니다.
이런 프로젝트는 얼마나 걸리나요?
이 규모의 단일 창고 유통업체라면 주가 아니라 월 단위로 잡으십시오——이 건은 처음부터 끝까지 대략 1년, 의도적으로 서두르지 않고 진행되었습니다. 한 부분씩의 방식은 속도를 안전과 맞바꿉니다. 서류상으로는 일괄 전환보다 느리지만, 끝내 나오지 않는 대체품을 얼어붙은 채 기다리는 회사의 위험은 지지 않습니다.
가장 중요한 첫 단계는 무엇인가요?
현재 시스템이 실제로 무엇을 하는지를——그 주위에 자라난 모든 스프레드시트와 우회책을 포함해——정직하게 문서화하고, 그다음 데이터를 정리하는 것입니다. 둘 다 어떤 새 소프트웨어를 만들기 전에 이루어집니다. 곧장 새 기술로 건너뛰는 것이, 현대화 프로젝트가 옛 문제를 모두 물려받고 그 책임을 뒤집어쓰는 경로입니다.
핵심 직원 한 사람의 머릿속에 있는 지식은 어떻게 되나요?
그것을 포착하는 것은 부수 효과가 아니라 주요 목표 중 하나입니다. 그 사람을 따라다니며 문서화되지 않은 규칙을 새 시스템에 부호화함으로써, 회사는 창고를 돌리는 데 어느 한 개인에게도 의존하지 않게 됩니다. 이 사례에서는 핵심 직원이 프로젝트 도중 은퇴했지만 운영은 차질 없이 이어졌습니다——그것이 바로 이 현대화가 목표로 한 결과입니다.
Have a nice day
Have a nice day
편집팀

Have a nice day는 중소기업의 디지털 전환을 돕는 소프트웨어 스튜디오입니다. 슬라이드에서만이 아니라 일상 업무에서 실제로 작동하는 자동화, AI, 맞춤형 소프트웨어를 만듭니다.

관련 서비스