피드로 돌아가기
GeekNewsBackend
원문 읽기
Show GN: StreamSheet - 대용량 엑셀 내보내기를 위한 Kotlin/Spring Boot 라이브러리
StreamSheet가 JPA Stream과 JDBC ResultSet 방식으로 100만 행 이상의 대용량 엑셀 내보내기 시 OOM 없이 안정적으로 동작하는 Kotlin/Spring Boot 라이브러리를 제공한다
AI 요약
Context
실무에서 엑셀 내보내기 구현 시 OOM 이슈가 빈번하게 발생했으며, 매번 개별 수정을 진행해야 했다. 엑셀 내보내기 기능 구현마다 반복적으로 보일러플레이트 코드를 작성해야 했다.
Technical Solution
- JPA Stream을 활용하여 대용량 데이터를 스트리밍 방식으로 조회한다
- JDBC ResultSet을 통해 데이터베이스 결과를(chunked processing) 방식으로 처리한다
- MongoDB Cursor를 지원하여 NoSQL 환경에서도 대용량 내보내기가 가능하다
- @ExcelSheet와 @ExcelColumn 어노테이션으로 DTO에 간단하게 컬럼을 정의한다
- Spring Boot Auto-configuration으로 별도 설정 없이 바로 사용 가능하다
Impact
100만 행 이상의 데이터를 OOM 없이 안정적으로 내보낼 수 있다
Key Takeaway
대용량 데이터 처리 시 전체 로딩이 아닌 스트리밍 방식으로 접근해야 메모리 안정성을 확보할 수 있다
실천 포인트
Spring Boot 기반 환경에서 대용량 엑셀 내보내기를 구현할 때 JPA Stream이나 JDBC ResultSet을 활용하면 OOM 이슈 없이 100만 행 이상을 안정적으로 처리할 수 있다