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

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

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

두줄요약

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

문제 상황

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

원인 분석

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

해결 방법

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

성능/운영 포인트

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

댓글 0

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

댓글을 불러오는 중...