목록 보기
카트 개발 연대기
아키텍처

카트 개발 연대기

마켓컬리
마켓컬리
2021년 8월 4일

두줄요약

주소지 기반 재고 조회와 주문 연동을 위해 카트를 네 세대에 걸쳐 개선했습니다.\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세대 카트 설계
  • 대규모 트래픽에서 빠른 처리와 타 도메인 장애 전파 방지 지향

다음 읽기

#Laravel 주제를 이어서 읽기

카트 개발 연대기

주소 기반 상품 노출과 기술부채 해소를 위해 카트를 4세대에 걸쳐 개선했습니다. 다중 세션 경합의 데드락은 아이템 공유형 Multi Cart로 완화했습니다.

마켓컬리
마켓컬리
백엔드

댓글 0개

댓글을 작성하려면 로그인이 필요합니다.

댓글을 불러오는 중...