Programming/Technical Writing
2026. 3. 13.
조회 병목 해소 과정: 쿼리, 인덱스, 비정규화, Redis
TL;DR: 정렬 기준이 되는 값을 저장하는 위치와 방법이 성능을 결정한다. 쇼핑몰 서비스에서 상품 목록 페이지는 가장 많은 트래픽이 몰리는 지점 중 하나다. 브랜드 필터링과 좋아요 순 정렬이라는 요구사항은 기능 명세서 위에서는 단순해 보이지만, 데이터 규모가 10만 건을 넘어서는 순간 그 단순함은 빠르게 무너진다. 초기엔 수십 ms 수준이던 응답 시간이 수백 ms로 늘어나고, 동시 요청이 쌓이기 시작하면 초 단위로 치솟는다. 기능은 동작하지만, 서비스는 버티지 못하는 상태다.이 글은 해당 병목을 단계적으로 해소한 과정을 담는다. 쿼리 실행 계획 분석을 시작으로, 인덱스 설계, like_count 비정규화를 통한 구조 개선, 그리고 Redis 캐시 도입까지. 각 선택이 어떤 문제를 풀기 위한 것이었는지..