핵심 요약
트렌비가 백오피스 엑셀 다운로드의 N+1 문제를 해결하고, QueryDSL 및 Projection으로 필요한 데이터만 조회한 뒤 SXSSFWorkbook으로 엑셀 시트를 생성하여 대용량 데이터 처리 성능과 메모리 효율을 크게 개선했습니다.
구현 방법
- JpaSpecificationExecutor 제거 후 QueryDSL 기반의 데이터 조회와 Projection을 사용해 OrderItemExcelDownloadDto를 선별적으로 구성
- 필요한 데이터만 조인하고, fetchJoin 대신 프로젝션으로 데이터 흐름 최적화
- Apache POI의 SXSSFWorkbook으로 스트리밍 방식 엑셀 생성을 도입해 메모리 사용을 대폭 절감
- 로컬 측정 기반으로 초기 다운로드 시간 2분 40초에서 6초로 감소, 엑셀 생성 시간은 2초에서 400ms로 단축
주요 결과
- N+1 이슈 해결 후 다운로드 시간이 약 2분 40초에서 6초로 감소(약 97% 개선)
- SXSSFWorkbook 도입으로 엑셀 생성 시간이 2초에서 400ms로 감소
- 데이터가 30,000건일 때 XSSFWorkbook vs SXSSFWorkbook 차이가 약 16초에 달하는 차이를 확인
- 대용량 데이터 처리 시 메모리 사용 효율이 개선되어 안정성 증가 가능성 제시

