
카트 개발 연대기
두줄요약
주소지 기반 재고 조회와 주문 연동을 위해 카트를 네 세대에 걸쳐 개선했습니다.\n다중 세션 경합에 따른 데드락을 아이템 공유 구조로 완화했습니다.
문제 상황
- 주소지 기반 물류센터 재고·전시·할인 조회와 구매 가능 여부 확인 요구
- 레거시 상품 구조, 느린 응답, 다중 세션의 단일 카트 정리 정책에 따른 데드락
- 앱 네이티브 API 규격 변경으로 구 카트 롤백이 어려운 운영 제약
구조와 흐름
- Legacy Cart: 컨트롤러 집중 코드의 서비스 분리, 인터페이스·Manager Pattern·Cart Response 기반 정비
- Stack Cart: 구·신규 테이블 Dual Write 기반 마이그레이션 시도와 데드락 악화
- Modern Cart: 선형 데이터 구조 전환과 주문서 진입 전 구 카트 부분 마이그레이션
- Multi Cart: 세션별 카트 아이템 공유와 상품·수량 집계 기반 다중 카트 처리
해결 방법
- Eager Loading과 relation 구조로 반복 조회 개선
- 단일 최신 카트 강제 유지용 cleansing 제거, n개 세션의 카트 공존 구조 채택
- 100원딜 검증 쿼리 리팩토링과 카트 아이템 수 캐시 레이어 적용
성능/운영 포인트
- DataDog APM 기반 야간 주문 트래픽 구간 API 성능 지표 관찰
- 불필요한 DML과 Write DB 자원 사용량 축소를 목표로 한 5세대 카트 설계
- 대규모 트래픽에서 빠른 처리와 타 도메인 장애 전파 방지 지향
