피드로 돌아가기
Show GN: StreamSheet - 대용량 엑셀 내보내기를 위한 Kotlin/Spring Boot 라이브러리
GeekNewsGeekNews
Backend

Show GN: StreamSheet - 대용량 엑셀 내보내기를 위한 Kotlin/Spring Boot 라이브러리

StreamSheet가 JPA Stream과 JDBC ResultSet 방식으로 100만 행 이상의 대용량 엑셀 내보내기 시 OOM 없이 안정적으로 동작하는 Kotlin/Spring Boot 라이브러리를 제공한다

danpung22026년 3월 30일1intermediate

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만 행 이상을 안정적으로 처리할 수 있다

원문 읽기