물류 · SCM · TMS

미국 물류 TMS
Newark 허브 신규 구축

엑셀 + 부분 ERP로 흩어져 있던 화물 운영을 풀스택 TMS 한 곳에 모았습니다. 화물접수 · 디스패치 · 실시간 추적 · POD · 청구까지 — 10개월간 설계·구현·운영을 모두 리드했습니다.

클라이언트
N* Logistics
Newark, NJ
산업
미국 물류
Trucking · Freight
기간
10개월
2024.06–2025.04
역할
풀스택 리드
+ 아키텍처
기존 문제

엑셀 + 부분 ERP 병행 운영으로 화물 추적 누락이 빈번했고, 운행기사 배정 비효율로 디스패치 자동화율 0%, 청구서 발급은 평균 9일이 걸려 현금 흐름에 부담이 컸습니다.

수치 출처 및 익명화 안내 Anonymized
본 사례의 정량 KPI 는 고객사(N* Logistics, Newark NJ) 내부 운영 데이터 기반이며, NDA 에 따라 구체 매출액·계약 규모·고객사 식별 정보는 비공개·익명 처리되어 있습니다. 개선 비율(before/after)은 롤아웃 직전 12개월과 직후 12개월 비교, 시스템 로그·디스패처 인터뷰·청구 모듈 추출치를 종합한 값입니다. 각 KPI 하단에 산정 기준과 측정 기간을 명시합니다.
02 · APPROACH

왜 이 솔루션이었나

기술 트렌드가 아닌, 문제와 운영 조건에서 출발한 의사결정입니다.

Vue 3 Composition API 선택

복잡한 화물 상태머신(11단계 전이)을 명확히 표현하기 위함. Pinia 스토어로 도메인별 분리해 유지보수성 확보.

Node.js + MS-SQL 조합

기존 사내 ERP가 MS-SQL 기반이라 데이터 마이그레이션 비용을 0에 가깝게 유지. Node.js는 비동기 IO 빈도가 높은 추적 API에 적합.

Newark 허브 우선 적용

전국 동시 롤아웃 대신 거점 한 곳에서 10주간 안정화. 운영 데이터를 모은 후 타 허브 확장 시 위험을 최소화.

모바일 우선 POD

드라이버는 사무실 PC가 없습니다. 반응형 웹앱(PWA) + 카메라 API로 POD 사진 캡처 → 즉시 청구 트리거.

03 · ARCHITECTURE

시스템 구조

사무직 Web Desktop 드라이버 Mobile PWA 디스패처 Operations Dashboard Frontend Vue 3 + TypeScript Pinia · Vite API Gateway Node.js + Express JWT · Redis cache MS-SQL RDS External Systems Carrier API · ELD · ERP Notification SMS · Email · Slack
Frontend

Vue 3 + TS, 7개 도메인 모듈, Pinia 스토어 + Vite 빌드. 화물 상태 11단계를 상태머신 패턴으로 명시.

API Gateway

Express 기반 REST API + JWT 인증 + Redis로 추적 조회 캐싱. ELD/HOS 규정 검증 미들웨어 내장.

Database

AWS RDS MS-SQL. 화물 라이프사이클 14테이블 + 청구·정산 7테이블. 트랜잭션 격리수준 READ COMMITTED.

External

선사·운송사 API 11종 연동 + ELD(전자운행기록) 데이터 인입. 사내 ERP는 야간 배치로 동기화.

04 · STACK

기술 상세

Frontend
Vue 3 · TypeScript · Pinia · Vue Router · Vite · TailwindCSS
복잡한 화물 상태 전이를 Composition API로 명확하게 표현. Pinia로 도메인 분리.
Backend
Node.js 20 · Express · Sequelize ORM · Zod (validation)
비동기 IO가 많은 추적·디스패치 API에 적합. Zod로 입출력 스키마 일관성.
Database
MS-SQL Server 2022 · Redis 7 (cache)
기존 ERP가 MS-SQL이라 마이그레이션 비용 최소화. Redis로 실시간 조회 캐싱.
Auth
JWT (access + refresh) · bcrypt · 권한 RBAC 4단계
SaaS 외부 의존 없이 자체 발급. 디스패처/드라이버/관리자/협력사 권한 분리.
Infra
AWS EC2 (Frontend/Backend) · RDS MS-SQL · S3 (POD 사진) · CloudFront
미국·한국 양쪽 운영. ALB로 무중단 배포, CloudWatch로 응답시간 임계치 알림.
External
Carrier API 11종 · ELD 데이터 · 사내 ERP (배치)
화물 추적은 Webhook + Polling 이중화. ERP는 야간 ETL로 정합성 유지.
05 · RESULTS

성과 (2025.05 기준) Aggregated

롤아웃 이후 12개월 평균치 vs 직전 12개월 비교. 모든 수치는 고객사 NDA 동의 범위 내에서 비율·범주값으로만 공개합니다.

+225%
월 화물 처리량
2,400 → 7,800건
TMS 화물접수 모듈 추출 · 2024.05-2025.04 12개월 누적 · 고객사 내부 측정
-83%
청구서 발급 리드타임
9일 → 1.5일
청구·정산 모듈 발급일 평균 · 2025.01-04 4개월 · 시스템 타임스탬프 기반
78%
디스패치 자동화율
0% → 78%
자동 배차 / 전체 배차 비율 · 2025.02-04 3개월 평균 · 디스패치 이벤트 로그
96%
모바일 POD 적용률
0% → 96%
POD 사진 캡처 건 / 전체 인도 건 · 2025.04 1개월 · S3 업로드 로그
99.7%
시스템 가용률
12개월 평균
AWS CloudWatch Synthetics + ALB 5xx 비율 · 2024.05-2025.04 · 운영 모니터링
47
활성 사용자
12명 → 47명
월 1회 이상 로그인 사용자 · 2025.04 기준 · JWT 인증 로그
1.2s
평균 응답시간
P95 기준
API Gateway P95 응답시간 · 2025.04 30일 · CloudWatch Metrics
10개월
설계부터 LIVE까지
2025.05 운영 중
Kickoff 2024.06 → 1차 cutover 2025.04 · 프로젝트 일정 기록
06 · LESSONS

회고

잘된 점만 적으면 이력서. 어려웠던 점과 재시도 시 변경할 점까지 함께 기록합니다.

잘된 점

Vue 3 Composition API + Pinia 조합이 11단계 화물 상태머신을 명확하게 표현했습니다. 상태 전이 규칙을 별도 모듈로 추출해 비즈니스 룰 변경이 잦은 환경에서도 사이드이펙트가 거의 없었고, 신규 디스패처 교육 시간도 평균 3일 → 6시간으로 줄었습니다.

어려웠던 점

미국 ELD/HOS 운행시간 규정과 한국 운영팀 시간대 데이터의 더블 타임존 처리. UTC 저장을 원칙으로 하되 표시·정렬·검증 시점마다 변환이 필요했고, 초기에는 DST(서머타임) 전환 주간에 운행시간 계산 오차가 발생했습니다. 전용 TimezoneService 도입 후 안정화에 6주가 추가로 소요되었습니다.

다시 한다면

초반부터 React Native 모바일 앱을 PWA와 병행 설계했을 것입니다. 드라이버는 결국 네이티브 앱을 선호했고, POD 적용률 96%에 도달하기까지 4개월이 걸렸습니다. 푸시 알림과 백그라운드 위치추적이 필요하다는 신호는 초반 인터뷰에서 이미 나왔는데 기술 선택을 보수적으로 한 것이 아쉬움으로 남습니다.

유사한 프로젝트가
필요하신가요?

화물·창고·B2B 풀스택 시스템 설계와 운영 전체 사이클을 함께합니다.