
백오피스 엑셀 다운로드 속도 개선하기
두줄요약
QueryDSL Projection으로 N+1 쿼리를 제거해 엑셀 다운로드 시간을 크게 줄였습니다. SXSSFWorkbook으로 변경해 대용량 엑셀 생성의 메모리 사용량과 처리 시간도 개선했습니다.
문제 상황
- 백오피스 구매확정 메뉴의 엑셀 다운로드 중 504 Gateway Timeout 발생
- 로컬 환경에서 약 1,000건 다운로드에 2분 이상 소요
원인 분석
- JpaSpecificationExecutor의 findAll 호출 과정에서 발생한 N+1 쿼리
- 다수 연관관계를 가진 OrderItem 엔티티 조회에 따른 불필요한 객체 탐색과 조인 부담
- 모든 데이터를 메모리에 적재하는 XSSFWorkbook의 대용량 엑셀 생성 비용
해결 방법
- JpaSpecificationExecutor 제거 후 QueryDSL 기반 조회와 Projection DTO 적용
- 엑셀에 필요한 필드만 선택하고 필요한 연관관계만 조인하여 N+1 쿼리 제거
- XSSFWorkbook 대신 스트리밍 방식의 SXSSFWorkbook 적용
성능/운영 포인트
- 동일 환경에서 전체 다운로드 시간 2분 40초에서 6초로 감소
- 엑셀 생성 시간 2초에서 400ms로 감소
- SXSSFWorkbook의 제한된 메모리 윈도우 사용으로 대용량 데이터 OOM 위험 완화




