대용량 엑셀 다운로드에서 메모리를 늘려도 OOM이 반복되고 Apache POI 스트리밍 코드를 매번 직접 작성하는 비용이 큽니다. StreamSheet는 그 반복 작업을 어노테이션 하나로 걷어낸 Spring Boot 라이브러리입니다.

OOM 없이 100만 행이 나갑니다

데이터를 한꺼번에 메모리에 올리지 않습니다. JPA Stream이나 JDBC ResultSet으로 순차적으로 읽으면서 조회와 파일 작성을 동시에 진행합니다. 가비지 컬렉터 부하가 일정하게 유지되고 부하 테스트에서도 프로세스 점유율이 안정적이었습니다.

다양한 데이터베이스 환경을 지원하니 기존 프로젝트에 붙이는 데 제약이 없습니다.

어노테이션 하나로 끝납니다

객체에 어노테이션을 붙이면 설정이 완료됩니다. Spring Boot Auto-configuration이 붙어 있어서 의존성 추가만으로 바로 동작합니다. 반환 타입만 지정하면 내부 변환기가 스트림을 열고 데이터를 전송합니다.

열 순서나 이름을 바꿀 때 설정값 한 줄만 수정하면 됩니다. 번호를 일일이 대조할 필요가 없고 Apache POI 보일러플레이트를 직접 유지보수하던 공수가 사라집니다.

요약

  • JPA Stream과 JDBC ResultSet으로 순차 처리하니 100만 행 엑셀 다운로드에서 OOM이 나지 않습니다
  • 어노테이션 기반 선언적 방식이라 Apache POI 보일러플레이트를 직접 짤 필요가 없습니다
  • Spring Boot Auto-configuration을 지원하니 의존성 추가만으로 기존 프로젝트에 바로 붙습니다

관련 글