이상적인 구조가 빠른 성능은 아닙니다
백엔드
이상적인 구조가 빠른 성능은 아닙니다
두줄요약
기획전 API의 중복 조회와 중첩 저장 구조를 분리해 성능을 개선한 사례를 다뤘습니다. 다만 구조 분리만으로는 충분하지 않아 실제 조회 패턴과 운영 부하까지 함께 고려해야 했습니다.
문제 상황
- 기획전 API에서 같은 MongoDB 도큐먼트의 중복 조회와 전체 조회가 반복되는 구조
- 그룹 기획전 정보와 상품 정보의 중복 저장으로 인한 불필요한 갱신과 데이터 증가 부담
원인 분석
- 하나의 도큐먼트에 테마와 상품을 모두 담은 중첩 구조
- 그룹 정보가 각 기획전 마스터에 복제 저장되는 설계
- 조회량 증가 시 병렬 호출, getMore, killCursor 같은 운영 이슈 유발
해결 방법
- 상품을 1도큐먼트=1상품 구조로 분리하고 테마 정보는 마스터로 이동
- 그룹 기획전 정보를 별도 컬렉션으로 분리해 중복 저장 제거
- 멀티기획전 조회는 조건과 배치 크기를 조정해 불필요한 커넥션과 왕복 감소
