목록 보기
무신사 성장과 함께 거대해져온 600줄짜리 쿠폰 쿼리와의 아름다운 이별
백엔드

무신사 성장과 함께 거대해져온 600줄짜리 쿠폰 쿼리와의 아름다운 이별

무신사
무신사
2024년 11월 13일

두줄요약

600줄짜리 쿠폰 쿼리를 분리·캐싱·로직 이관으로 개선한 사례를 소개했습니다. 평균 지연시간과 DB 사용률을 낮추며 유지보수성과 비용 효율을 높였습니다.

문제 상황

  • 상품 상세 페이지에서 최적 쿠폰을 실시간 제공해야 하는 요구로 쿠폰 조회 쿼리 복잡도 증가
  • 600줄 규모의 레거시 쿼리가 트래픽 증가를 감당하지 못하고 인프라 비용 부담으로 이어짐

원인 분석

  • JOIN, SubQuery, UNION, GROUP BY, ORDER BY, CASE 등이 뒤섞인 무거운 단일 쿼리 구조
  • 데이터베이스가 계산과 조회를 모두 떠안으며 유지보수성과 성능이 함께 악화

해결 방법

  • 쿠폰 조회를 여러 개의 짧은 쿼리로 분리하고 애플리케이션에서 결과 조합
  • 자주 조회되지만 변동이 적은 데이터는 캐싱 처리
  • 일부 조건 판단과 연산을 Application 로직으로 이동

성능/운영 포인트

  • S3, Memcached, 분산 저장 등 여러 시도 후 최소 DB 사용 방향으로 정리
  • 평균 latency 110ms에서 83ms로 개선, DB 사용률도 크게 감소
  • 쿼리 단순화로 유지보수성과 인프라 비용 절감 효과 확보

다음 읽기

#DB 주제를 이어서 읽기

무신사 쿠폰 시스템, DB 성능 64% 개선으로 기술 부채를 갚다

무신사는 쿠폰 시스템의 레거시 병목을 분석해 API와 쿼리 구조를 개선했습니다. 그 결과 DB 성능을 64% 높이고 고트래픽 구간의 CPU 알람을 안정화했습니다.

무신사
무신사
백엔드

댓글 0개

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

댓글을 불러오는 중...