안녕하세요. 배송최적화 스쿼드에서 백엔드 개발을 담당하고 있는 리아입니다.🐣
오늘은 저희 스쿼드에서 최근까지 진행해온 배송최적화 시스템 구축 과정을 공유하려 합니다.
서비스의 비약적인 성장에 발맞춰 단일 센터 구조에서 멀티 센터 구조로 전환하는 과정은 단순한 인프라 확장을 넘어, 기존의 경직된 주문 처리 아키텍처를 전면 재설계해야 하는 복잡하고도 흥미로운 과제였습니다.
저희 스쿼드가 어떤 고민을 거쳐 지금의 구조를 설계하게 되었는지, 그 과정의 기록을 시작해보겠습니다.
1. 왜 새로운 시스템이 필요했을까?
올리브영은 최근 몇 년간 비약적인 성장을 이어가고 있습니다. 2024년 연간 매출과 영업이익 모두 전년 대비 20% 이상 성장하였으며, 특히 온라인 사업은 가파른 성장세를 보이며 전체 매출의 30% 이상을 차지하게 되었습니다.
🔗 관련 자료: 소비자가 만드는 신문, "CJ올리브영 '옴니채널 전략' 통했다...온라인 매출 비중 30% 돌파, 전체 매출도 '쑥쑥'"
🏢 단일 센터 체제의 한계와 멀티 센터로의 전환
올리브영은 이러한 가파른 성장세를 뒷받침하기 위해 물류 인프라를 다각화해 왔습니다.
양지센터 중심의 단일 센터 체제를 넘어, MFC(Micro Fulfillment Center, 도심형 물류 센터) 확대와 오늘드림 서비스 고도화를 병행하며 물류망의 범위를 넓히는 데 주력했습니다.
이러한 물류 인프라 확장의 연장선으로 2025년 1월에는 비수도권 배송 효율을 극대화할 경산센터를 온라인몰 배송에도 본격 투입하며 전국 단위 멀티 센터 체제를 향한 물리적 토대를 마련했습니다
🔗 관련 자료: 올리브영 뉴스룸, "CJ올리브영, 비수도권 물류 허브 ‘경산센터’ 본격 가동"
하지만 단순히 물리적인 센터를 늘리는 것만으로는 문제가 해결되지 않았습니다. 오히려 늘어난 센터를 효율적으로 활용하지 못하는 기존 시스템의 구조적 한계가 하나둘 드러나기 시작했습니다. 🥲
-
분배 로직의 부재로 인한 양지센터 과부하
- 센터가 확장되었음에도 주문은 여전히 기존 방식대로 양지센터로 인입되었습니다. 두 개의 센터가 존재함에도 특정 센터에만 물량이 쏠리는 현상이 반복되었고, 결과적으로 인프라 확장 효과를 체감하기 어려운 구조가 지속되었습니다.
-
수작업 기반의 비효율적인 물량 재분배
- 양지센터의 부하를 덜기 위해 경산센터로 주문을 넘길 때마다 운영자는 매번 주문 데이터를 엑셀로 추출하여 수동으로 할당해야 했습니다. 이러한 인적 자원에 의존하는 수작업 기반의 프로세스는 물류 전반의 운영 효율을 저하시키는 핵심 요인이 되었습니다.
-
지속되는 배송 지연과 고객 경험 저하
- 결국 센터 확장이라는 변화에도 불구하고 이를 뒷받침할 시스템의 부재로 배송 지연은 해소되지 않았고, 고객 문의와 주문 취소 증가라는 고객 경험 저하로 이어졌습니다.
결국 물류 현장의 비효율을 걷어내고 거점 확장의 효과를 극대화하기 위해서는 전체 주문 흐름을 실시간으로 제어할 새로운 시스템이 필요했습니다.
이를 위해 저희 스쿼드는 배송최적화 시스템을 구축하게 되었습니다.🚀
2. 기존 시스템은 어떻게 되어 있었나 (As-Is)
기존 주문 처리 구조는 앞서 설명해 드린 대로 양지센터 중심의 단일 센터 체제를 전제로 설계되어 있었습니다.
고객이 주문/결제를 완료하면 출하지시 MQ(Message Queue, 메시지 큐)를 통해 주문관리시스템(OMS) → 운송관리시스템(TCS) → 창고관리시스템(WMS) 순으로 하나의 흐름을 타고 내려가며, 최종적으로
양지센터에서만 출고가 이뤄지는 구조였습니다.
💡 OMS, TCS, WMS 등 올리브영 물류 시스템의 전반적인 구조가 궁금하시다면, "올리브영 물류 시스템의 이해" 포스팅을 참고해주세요.☺️
단일 센터 체제는 출고처가 고정되어 있었기에 별도의 복잡한 로직 없이 선형적 구조만으로도 안정적인 운영이 가능했습니다.
하지만 운영하는 센터가 늘어나는 순간, 단일 센터 중심의 경직된 주문 처리 구조는 다음과 같은 구조적인 한계를 드러내며 명확한 페인 포인트(Pain Point)가 되었습니다.
-
데이터 단절로 인한 판단 불가
- 주문 단계에서 실시간 재고나 센터별 가동률(CAPA) 같은 물류 데이터를 즉시 확인하고 의사결정에 반영하기 어려웠습니다.
-
경직된 주문 흐름
- 기존 창고 시스템(WMS)은 확정된 주문을 처리하는 데 특화되어 있어, 운영 상황에 따라 출고처를 유연하게 변경하거나 재배정하는 기능이 미비했습니다.
-
정책 대응의 높은 비용
- 새로운 배송 정책이나 센터별 특이 사항이 발생할 때마다 각 시스템의 로직을 직접 수정해야 했기에, 급변하는 비즈니스 요구에 즉각 대응하기엔 한계가 있었습니다.
결국 기존 센터와 신규 센터 사이에서 최적의 출고처를 실시간으로 찾아줄 새로운 판단 레이어(Control Tower) 가 절실해졌습니다.
3. 무엇이 달라졌나 (To-Be)
앞서 살펴본 구조적 한계를 극복하고 확장된 물류 인프라를 지능적으로 제어하기 위해, 기존의 선형적인 주문 흐름 사이에 '지능형 판단 레이어'를 추가하여 데이터 흐름의 제어권을 확보하는 설계를 진행했습니다.
단순히 시스템 하나를 추가하는 것을 넘어, 주문 생성부터 출고에 이르는 전체 데이터 파이프라인에서 의사결정의 주체를 재정의한 것이 이번 설계의 핵심입니다. 이를 위해 다음과 같은 네 가지 핵심 설계 원칙을 세웠습니다.
-
로직의 파편화를 방지하는 '판단 레이어의 통합'
- 기존에는 주문 시점에 단순히 실시간 재고 유무만을 확인하여 출고처를 결정하는 단편적인 방식을 사용했습니다.
- 새로운 시스템에서는 재고뿐만 아니라 센터별 실시간 가동률(CAPA), 고객 주소지 기반의 배송 권역 정보 등 파편화된 운영 변수를 한곳에 모아 종합적으로 판단합니다.
- 이를 통해 OMS와 WMS 사이에서 복잡한 분배 로직을 전담 처리하는 독립적인 엔진을 구축했습니다.
-
운영 리스크를 최소화하는 '확정 전 단계의 제어'
- 설비 할당 이후 수정이 어려운 WMS의 경직성을 고려하여, 출고 지시 데이터가 넘어가기 직전 단계에서 모든 검증을 마치는 구조를 택했습니다.
- 잘못된 센터 할당이 물류 현장의 병목으로 이어지지 않도록 실시간 재고와 CAPA를 다각도로 검증하는 독립적인 검증 레이어 역할을 수행합니다.
-
비즈니스 속도에 대응하는 '정책 가변성 확보'
- 상시로 변하는 운영 정책을 코드 수정 없이 반영할 수 있도록 룰 기반(Rule-based) 엔진 구조를 도입했습니다.
- 특정 센터 우선 출고나 이벤트성 정책 변경 시에도 시스템 배포 없이 DB 설정값 변경만으로 유연한 대응이 가능합니다.
-
고객 가치를 지키는 '데이터 기반의 SLA 보장'
- 센터별 가동률과 배송 권역 정보를 실시간 데이터로 판단하여 리드타임을 최소화하는 최적의 출고처를 도출합니다.
- 모든 시스템 판단의 기준은 배송 리드타임 최소화라는 본질적인 가치에 집중합니다.
이러한 원칙을 바탕으로 주문 관리(OMS)와 창고 관리(WMS) 사이에 배송최적화 시스템(Delivery Optimization System)을 배치하여, 주문 완료 후 실제 물류 센터로 출하지시 데이터가 넘어가는 시점에 각 주문별 최적의 출고처를 실시간으로 판단하도록 했습니다.
결과적으로 OMS는 복잡한 분배 로직을 직접 인지할 필요 없이, 배송최적화 시스템과의 API 연동만으로 실시간 물류 상황이 반영된 최적의 출고처를 할당받게 되었습니다. 주문 프로세스의 중심에 위치한 시스템인 만큼, 대규모 트래픽 부하 속에서도 100ms 이내의 빠른 응답 속도와 고가용성을 보장하기 위해 아키텍처 내부에 설계한 핵심 기술 요소들을 이어지는 섹션에서 하나씩 살펴보겠습니다.
4. 배송최적화 시스템 (Delivery Optimization System)
배송최적화 시스템은 유연한 물류 운영을 위해 크게 주문분배와 주문이관이라는 두 가지 핵심 기능을 수행합니다.
4-1. 실시간으로 최적의 출고처를 결정하는 '주문분배(Order Distribution)'
배송 정책은 비즈니스 상황과 물류 전략에 따라 유연한 확장성이 요구되는 영역입니다.
최적의 출고처를 판단하기 위해 각 분배 로직을 독립적인 전략(Strategy) 단위로 모듈화하고, 이를 조합해 최종 의사결정을 내리는 룰 엔진(Rule Engine) 구조를 채택했습니다.
특히 배송최적화 시스템은 일정 주기로 인입되는 대량의 출하지시 주문들을 지연 없이 처리하는 것이 핵심입니다.
도메인 특성상 주문 건들이 특정 시점에 한꺼번에 내려오기 때문에, 수만 건의 주문이 일시에 유입되더라도 전체 프로세스가 정체되지 않아야 합니다.
이를 위해 개별 주문에 대한 판단 로직을 100ms 이내로 최적화하여 대규모 트래픽 환경에서도 성능 병목(Bottleneck) 없는 안정적인 처리가 가능해졌습니다.
이러한 고성능과 회복 탄력성을 뒷받침하기 위해 시스템 내부에 설계한 핵심 장치들은 다음과 같습니다.
-
장애 격리를 위한 서킷 브레이커(Circuit Breaker) 적용
- 장애 전파 방지: Resilience4j 기반의 서킷 브레이커를 적용하여, 배송최적화 시스템의 부하가 상위 시스템(OMS)으로 전이되는 현상 차단
- 시스템 안정성 확보: 특정 구간의 과부하가 전체 주문 프로세스의 결함으로 이어지지 않도록 회복 탄력성 확보
-
데이터 특성에 따른 다중 캐싱 전략:
- Local Cache(Caffeine): 센터별 가용량(Capacity) 등 정적 기준 정보를 서버 메모리에 적재하여 네트워크 통신 지연(Latency) 최소화
- Remote Cache(Redis): 실시간 출고량(Throughput) 등 동적 데이터는 Redis로 관리하여, 분산 환경에서의 데이터 정합성 유지 및 100ms 이내의 판단 성능 보장
-
전략 패턴 기반의 필터링 파이프라인
- 런타임 전략 결정: 복잡한
if-else구조 대신, DB 설정값에 따라 런타임에 실행 전략이 결정되는 파이프라인 구축 - 운영 정책의 유연한 변경: 개별 전략(Filter/Score)의 조합을 DB 값 변경만으로 제어하여, 코드 수정이나 배포 없는 운영 정책의 유연성 확보
💡 최적의 센터를 찾아가는 프로세스
1단계. SKU(Stock Keeping Unit, 상품 관리 코드) 및 재고 보유 확인: 해당 상품 재고를 보유한 센터 판별 (경산/양지)
2단계. CAPA(Capacity, 처리 용량) 여유 확인: 재고는 있지만 일일 처리 한계를 초과한 센터는 제외
3단계. 우편번호 기준 권역 매칭: 고객 주소지 기반으로 배송 권역 확인, 최적 센터 우선순위 결정
4단계. 출하지시 MQ 전송: 최종 선택된 센터로 출하 지시 메시지 발행 - 런타임 전략 결정: 복잡한
4-2. 운영 변수에 유연하게 대응하는 '주문이관(Order Transfer)'
주문분배가 초기 최적화를 담당한다면, 주문이관은 출고처 배정 이후의 부하를 조절하는 유동성 확보 의 핵심입니다.
특정 센터에 물량이 과도하게 집중될 때, 여유가 있는 다른 센터로 물량을 이동시켜 물류 적체를 해소하는 역할을 합니다.
특히 이 기능은 양지센터의 부하를 경산센터로 분산할 때 진가를 발휘합니다.
과거에는 양지센터의 부하가 임계치에 도달하면 운영자가 수만 건의 데이터를 엑셀로 추출해 경산센터에 수동으로 할당하는 과정을 거쳐야 했습니다.
하지만 이제는 단 한번의 클릭만으로 수만 건의 물량을 안정적으로 이관할 수 있는 환경을 구축하여 운영 효율을 개선했습니다.
이러한 대량의 데이터를 안정적으로 처리하기 위해 아키텍처 내부에 설계한 기술적 장치들은 다음과 같습니다.
-
분산 환경에서의 데이터 정합성 보장
- Redis 기반의 분산락(Distributed Lock)을 적용하여 다수 인스턴스 환경에서도 중복 이관을 방지하고 작업 멱등성 및 데이터 정합성을 확보했습니다.
-
장애 격리
- 외부 시스템(재고, OMS) 연동 시 발생하는 응답 지연이 전체 프로세스로 전파되지 않도록 구간별 서킷 브레이커를 배치하여 시스템 전반의 가용성 및 서비스 연속성을 유지했습니다.
-
데이터 최종 정합성 확보
- 재고 처리나 OMS 상태 변경 등 외부 시스템 연동 과정에서 일부 단계가 실패할 경우, 이미 처리된 앞선 단계를 원복하는 보상 트랜잭션(Compensating Transaction) 을 설계하였습니다.
- 각 단계별 실패 시나리오에 맞춰 상대 시스템의 롤백 API를 즉시 호출함으로써, 분산된 환경에서도 시스템 간 데이터 불일치 리스크를 최소화하고 최종적인 정합성을 보장합니다.
💡 이관 실행 프로세스
1단계. 사전 검증: 대상 센터의 실시간 재고와 기존 WMS의 작업 상태를 확인하여 이관 가능 여부 판단
2단계. 상태 제어: 기존 센터의 주문 취소와 신규 송장 채번, 재출하 지시를 하나의 트랜잭션처럼 동기화하여 처리
3단계. 재고 동기화: 변경 전후 센터의 재고 데이터를 정확히 증감시켜 시스템과 실재고 사이의 오차 방지 -
운영 가시성 확보를 위한 모니터링 UI
- 실시간 트래킹: 대량 주문 이관 진행 시 진행률과 성공/실패 여부를 실시간으로 확인할 수 있는 모니터링 UI 구축
- 운영 효율 개선: 운영자는 수만 건의 이관 현황을 엑셀 수작업 없이 대시보드로 실시간 파악 및 관리 가능
5. 배송최적화 시스템 도입 효과 (9월 vs 12월 세일)
배송최적화 시스템 도입 후, 실제로 어떤 변화가 있었을까요?
객관적인 성능 검증을 위해 트래픽이 가장 집중되는 '올영세일' 기간을 기준으로 도입 전(9월)과 도입 후(12월)의 성과 지표를 대조해 보았습니다.
💡 참고: 두 기간 모두 물류 센터의 가용량(CAPA) 한계치까지 트래픽이 몰리는 고부하 상황이라는 공통점을 기반으로 대조군을 설정했습니다.
5-1. 출고 처리 성능(Throughput)의 향상
단일 센터 체제에서는 특정 센터의 CAPA가 차오르면 그대로 배송 지연으로 이어졌습니다.
하지만 이제는 실시간 가동률 데이터에 기반한 동적 분배를 통해 양지센터의 부하를 경산센터로 즉시 분산합니다.
그 결과, 전체 센터의 가용 자원을 낭비 없이 100% 활용하며 최대 일 출고량을 전년 대비 43.5% 끌어올리는 성과를 거두었습니다.
5-2. 운영 프로세스 자동화 및 안정성 확보
전체 처리 물량은 전년 대비 크게 늘었으나, 시스템 자동화를 통해 현장의 운영 부담은 오히려 대폭 감소했습니다.
특히 주문분배 및 이관 과정에서 시스템의 자율 판단 체계를 구축함으로써 운영자의 수동 개입을 49.2% 줄이고, 수기 할당 업무를 사실상 '제로(Zero)'화 했습니다.
또한, 보상 트랜잭션과 멱등성 설계를 통해 이관 프로세스의 안정성을 확보한 결과, 휴먼 에러가 발생할 수 있는 수동 개입 포인트를 원천 차단하고 데이터 기반의 예측 가능한 운영 환경을 구축했습니다.
5-3. 배송 리드타임 단축을 통한 고객 경험 개선
가장 유의미한 성과는 고객이 체감하는 배송 속도의 향상입니다.
단순히 출고처를 나누는 것에 그치지 않고, 각 센터의 실시간 가동 상황과 권역별 최적 경로를 반영한 '흐름의 최적화'를 통해 출고 정체 구간을 해소했습니다.
그 결과, 대규모 물량이 몰리는 피크 타임에도 배송 리드타임을 전년 대비 평균 14시간 단축하는 성과를 거두었습니다.
이는 시스템이 스스로 최적의 경로를 찾아냄으로써 물류 병목을 해결하고, 고객에게 더욱 빠르고 신뢰받는 배송 경험을 제공할 수 있게 되었음을 의미합니다.
6. 마치며: 물류의 '자율 주행'을 향하여
멀티 센터 체제로의 전환은 단순히 센터 하나를 더 운영하는 수준을 넘어, 물류 시스템 전체의 관점에서 아키텍처를 전면 재설계하는 도전적인 작업이었습니다.
이번에 구축한 배송최적화 시스템은 그 변화의 첫걸음이자, 앞으로 만들어갈 유연한 물류 인프라의 기반이 될 것입니다. 그리고 이 모든 기술적 시도의 중심에는 저희 배송최적화 스쿼드가 지향하는 명확한 목표가 있었습니다.
🎯 올리브영 배송최적화 스쿼드의 목표
“
고객이 주문 버튼을 누르는 순간,
스스로 가장 빠르고 효율적인 경로를 선택하는
물류 운영 시스템을 구축한다
”
이번 프로젝트로 그 초석을 다졌다면, 이제는 이 비전을 완성하기 위해 다음과 같은 기술적 로드맵을 그려나가고 있습니다.
- 출고처 및 배송방식 자동 전환 고도화: 운영 상황에 따라 택배사와 배송 방식을 실시간으로 스위칭하는 유연한 출고 구조 완성
- 분리 배송 아키텍처 도입: 부분 결품이나 특정 센터 지연 시에도 가용한 상품부터 선출고하는 유연한 주문 처리 로직 고도화
- 정확한 배송 예정일(ETA) 산출: 재고 현황, 센터별 부하, 권역별 상황을 실시간 반영하여 주문 시점에 정확한 배송 예정일을 안내하는 알고리즘 개발
- 멀티 채널 출고 확장성 확보: MFC, 매장, 외부 물류 파트너 등 신규 출고처를 코드 수정 없이 즉시 수용할 수 있는 룰 기반 확장성 강화
저희가 추구하는 가치는 명확합니다.
고객에게는 기다림 없는 배송 경험을, 운영자에게는 시스템이 스스로 판단하는 자율적인 환경을 제공하는 것
배송최적화 스쿼드는 이 가치를 현실로 만들기 위해 오늘도 보이지 않는 곳에서 치열하게 고민하고 있습니다.
여러분의 서비스도 물류 센터 확장을 앞두고 계신가요?
그렇다면 센터를 늘리는 것만큼이나 중요한 '어떻게 최적으로 분배할 것인가'에 대한 고민을 꼭 먼저 시작해 보시길 권합니다.
그리고 저희의 시행착오와 성취가 담긴 이 경험이 비슷한 도전을 앞둔 분들께 의미 있는 실마리가 되었기를 바랍니다. 🐥
이번 포스팅에서는 전체적인 아키텍처와 도입 성과를 중심으로 살펴보았는데요.
배송최적화 시스템의 상세한 엔지니어링 디테일은 이어지는 저희 스쿼드의 다음 포스팅에서 더 자세히 소개해 드릴 예정이니 많은 기대 부탁드립니다! 🔜
마지막으로 올리브영에서 저희와 함께 물류의 미래를 만들고 싶으신 분들의 많은 관심과 지원 부탁드립니다. 🙇♀️
👉 올리브영 코어플랫폼유닛 Back-end 개발자 채용 공고 바로가기

