카트 개발 연대기
핵심 내용
마켓컬리가 카트 도메인의 데드락 문제를 해결하고 성능을 개선하기 위해 5세대 설계를 추진 중이다.
자세히 보기
마켓컬리의 김진실 개발자가 카트 도메인의 5년간의 개발 연대기를 공개했다. 카트는 모든 주문의 시작점으로, 라라벨 프레임워크 기반에서 DDD(Domain-Driven Design) 컨셉을 적용해 4세대에 걸쳐 리팩토링을 진행했다.
1~3세대: 레거시 탈피와 데드락의 굴레
1세대는 Controller에 밀집된 3,000줄의 코드를 Service 단위로 분리하고 Eager Loading을 도입해 응답 속도를 개선했다. 2세대 Stack Cart는 Modern Cart로의 마이그레이션을 위해 설계되었으나, 트리구조와 선형 구조의 데이터 차이로 인해 데드락이 발생하며 실패했다. 특히 카트 Cleansing 과정에서 동일 계정 동시 접속 시 소유권 경합이 발생해 서비스 장애를 유발했다.
3세대 Modern Cart는 Stack Cart의 기반을 활용해 배포되었으나, 주문서와의 연동 문제와 특정 트래픽에서의 데드락 잔존 문제가 남아 있었다.
4세대 Multi Cart: 공유 구조로의 전환
데드락의 근본 원인이 '1개 세션 유지 정책'에 있음을 파악하고, 4세대 Multi Cart에서는 카트 아이템을 서로 빼앗는 대신 **공유(Sharing)**하는 방식으로 전환했다. n개 세션을 유지하고 아이템을 공유함으로써 경합을 피했으며, 캐시 레이어 도입으로 기술 부채를 상환했다.
5세대 목표: 장애 격리와 리소스 최소화
현재 개발 중인 5세대 카트는 다른 도메인의 장애 지표가 되지 않도록 기능을 분리하고, 불필요한 DML을 감소시켜 Write DB 리소스 할당을 최소화하는 데 초점을 맞췄다. 대규모 트래픽 발생 시 원활한 처리를 목표로 하며, 올해 말 공개될 예정이다.
이 한국어 요약은 AI가 자동으로 만들었습니다. 원문의 주장과 맥락은 원문에서 확인해 주세요. 저작권은 원저작자에게 있습니다.