🏢 3PL 멀티 테넌트 WMS 아키텍처
단일 WMS 위에 복수 고객사 분리 · 고객사별 SLA/브랜딩/피킹 규칙·AI 모델 격리 · 11월 3PL 운영 성과 · 박소연 선임연구원
3PL(제3자 물류) 운영사는 자사 창고에 다수 고객사의 재고를 유치해 운영한다. 단일 WMS 위에서 고객사별 데이터·정책·AI 모델을 완벽히 분리하면 인프라 비용은 공유하면서도 서비스 수준은 개별 보장할 수 있다. 핵심은 네 가지: 데이터 격리(파티션· RLS), SLA 차등(당일/익일/주간), 브랜딩 분리(라벨·POD· 알림 양식), 고객사별 피킹 규칙(우선순위·FIFO/FEFO·위험물).
RT-W22는 tenant_id 라우팅을 1급 시민으로 다루는 multi- tenant WMS와 per-tenant AI 모델(슬로팅·경로 최적화)을 결합하여 기존 단일 시스템의 한계를 해소한다. 모든 요청은 토큰에서 tenant_id를 추출 → tenant_configs 로드 → 고객사 정책 enforce → tenant 전용 AI 모델 호출 → 파티션 격리된 audit log 기록 흐름을 따른다. 11월 기준 12개 고객사를 단일 클러스터에서 무사고 운영했다.
주문/요청에서 tenant_id 식별. 인증 토큰 검증, 테넌트 권한 체크 (cross-tenant 액세스 차단).
tenant_configs[tenant_id] 로드. SLA, 피킹 규칙, 브랜딩 자산, 라벨 양식, 알림 채널을 캐시 우선 fetch.
우선순위·FIFO/FEFO·위험물 분리·존 제한 정책 enforce.noisy_neighbor 감지 시 throttle 발동.
models[tenant_id].optimize_path() 로 테넌트 전용 AI 모델 호출. 학습 데이터·가중치는 고객사별 격리.
tenant-scoped audit log 기록. SOC 2 / ISO 27001 요건 만족, 파티션 단위 immutable append-only 저장.
class MultiTenantWMS: def pick_order(self, order, tenant_id): config = self.tenant_configs[tenant_id] sla = config["sla_hours"] rules = config["pick_rules"] # 고객사별 피킹 규칙 model = self.models[tenant_id] # 개별 AI 모델 path = model.optimize_path(order, rules) return path def enforce_isolation(self, query, tenant_id): # 파티션 단위 RLS · cross-tenant 접근 차단 query.where("tenant_id" == tenant_id) assert query.partition == tenant_id, "ISO_VIOLATION" return query
sla_compliance · 약속한 SLA 시간 안에 완료된 주문 비율, 계약상 가장 큰 재무적 페널티 항목data_isolation · 자기 파티션 내부 쓰기/읽기 비율, cross-tenant 누수 0건 = 1.0branding_fit · 라벨·POD·알림 양식이 고객사 가이드와 일치하는 비율noisy_neighbor_penalty · 다른 테넌트 응답 지연을 유발한 피크 트래픽 비중 (감점)예) 테넌트 A가 SLA 99%, iso 1.0, brand 0.95, noisy 0.05이면 0.35·0.99 + 0.30·1.0 + 0.20·0.95 − 0.15·0.05 = 0.83 으로 상위 등급. 반대로 시즌 피크 고객사 C는 SLA 92%, iso 1.0, brand 0.9, noisy 0.45 → 0.83 − 0.07 ≈ 0.76 으로 throttle 발동 후 유지.
| 패턴 | 데이터 격리 | 운영 비용 | 보안 | 적합성 |
|---|---|---|---|---|
| Schema-per-tenant | 강 | 중 | 강 | ★★★★ · 일반 3PL 권장 |
| Row-level (tenant_id col) | 중 | 저 | 중 | ★★★★★ · 소형 다수 고객 |
| DB-per-tenant | 매우 강 | 고 | 매우 강 | ★★★ · 대형 고객 한정 |
| Hybrid (hot=row, cold=schema) | 강 | 중 | 강 | ★★★★ · 11월 채택안 |
IntraLogis 3PL 클러스터는 Hybrid 패턴을 채택했다. 핫 경로(주문· 피킹·재고)는 row-level + RLS로 빠르게 처리하고, 콜드 경로(audit log· 분석 dump)는 schema-per-tenant로 분리해 컴플라이언스 요구를 만족한다. 대형 고객 D사 한 곳만 별도 DB-per-tenant로 운영해 전용 SLA를 보장한다.
[1] 박소연 외, "3PL 멀티 테넌트 WMS 아키텍처 설계", IntraLogis 사내 보고서, 2025.11
[2] AWS, "SaaS Multi-Tenant Architecture" Whitepaper, 2024
[3] Microsoft Azure, "Multi-tenant SaaS database tenancy patterns", 2024
[4] ISO/IEC 27001:2022 Information Security Management Systems
[5] AICPA, SOC 2 Type II 가이드, 2023
[6] 대한상공회의소, 3PL 운영 가이드, 2024