Node.js 환경에서 대규모 엑셀(XLSX) 파일을 다룰 때 고질적인 문제였던 메모리 부족 현상을 해결할 새로운 라이브러리 'Sheetstream'이 등장했습니다. 이 라이브러리는 러스트(Rust) 코어를 활용한 스트리밍 API를 통해, 기존 라이브러리들이 수백만 행의 데이터를 처리할 때 겪던 메모리 초과 문제를 단 80MB 수준의 램(RAM)만으로 해결합니다. 이는 웹 서버나 클라우드 환경에서 대용량 데이터 보고서를 생성하거나 분석해야 하는 개발자들에게 매우 반가운 소식입니다.
Sheetstream은 데이터를 한 번에 메모리에 로드하는 대신, 1,000개 행 단위의 배치(batch)로 처리하는 스트리밍 방식을 채택합니다. 덕분에 100만 행에 달하는 엑셀 파일을 읽고 쓰는 데 약 80MB의 메모리만 사용하며, 이는 기존의 인기 라이브러리인 엑셀JS(exceljs)가 메모리 부족으로 작동을 멈추는 것과 대조적입니다. 또한, macOS, 리눅스, 윈도우 등 다양한 운영체제용 사전 빌드된 바이너리(prebuilt binaries)를 제공하여 설치 시 별도의 컴파일 과정이 필요 없어 개발 편의성을 높였습니다. 기본적인 헤더 스타일, 열 너비, 숫자 형식 지정, 헤더 고정 및 필터 추가와 같은 경량 서식 기능도 지원하여 실용성을 더했습니다.
이러한 기술적 진보는 Node.js 기반의 웹 애플리케이션이 대규모 데이터 처리 워크로드를 더욱 효율적으로 수행할 수 있게 함으로써, 개발자들이 메모리 제약 없이 복잡한 데이터 관리 기능을 구현할 수 있도록 돕습니다. 특히, 익스프레스(Express), 넥스트JS(Next.js), 호노(Hono), 네스트JS(NestJS)와 같은 인기 프레임워크와의 연동 레시피를 제공하여 실제 서비스에 빠르게 적용할 수 있도록 지원합니다. 이는 기업용 백오피스 시스템, 데이터 분석 플랫폼, 보고서 생성 서비스 등 다양한 분야에서 사용자 경험을 향상시키고 개발 비용을 절감하는 데 기여할 것으로 기대됩니다.