17개 허브를 그래프로 다루는 MSA 물류 관리 플랫폼. Hub 도메인 설계부터 최적 경로 탐색과 재고 동시성 제어까지 담당했습니다.
기술 스택
- BackendJava 17, Spring Boot, Spring Data JPA, QueryDSL
- StoragePostgreSQL
- Cache/MQRedis, Redisson, RabbitMQ
- TestJUnit5, Mockito, Spring Boot Test
기여도
30%
6인 팀 프로젝트의 팀 리더이자 Hub 도메인 담당. Hub 도메인 설계·개발과 공통 API·프로젝트 구조 설계를 주도했습니다.
진행 과정
- 17개 허브 연결 정보를 JVM 그래프로 구성하고 Dijkstra 최적 경로 탐색을 구현
- Redis Cache-Aside를 적용하고, 경로 변경 이벤트 기반으로 그래프·캐시를 동기화
- 동시 재고 차감의 Lost Update를 재현한 뒤 Redisson 분산락을 적용
- 주문 처리 이력과 Unique Constraint로 재시도 요청의 멱등성을 보장
성과
- 동시 요청 10건에서 재고 불일치 Expected 90 / Actual 99 → Actual 90 으로 해결
- hubId + productId 단위 Lock으로 Scale-out 환경의 재고 동시성 제어
- 최단 경로 Redis Cache-Aside 적용 후 100VU에서 p95 465.9ms → 304.2ms (34.7% ↓), 반면 처리량은 798 → 561 RPS (30% ↓)
- 1VU 저부하 재측정에서 CPU Throttling 0회 → 35회를 확인, 캐시 적용에 따른 CPU 오버헤드 가능성임을 식별
- 캐시 사용 여부를 환경변수로 분리해 트래픽 특성에 따라 선택 가능하도록 구성