Company · Performance

엑셀 로딩을 일괄 처리에서 스트리밍 구조로 변경

핵심 분석 파일 로딩을 행 단위 스트리밍 구조로 바꾸고, 비정상 값이 전체 처리를 멈추지 않도록 개선했습니다.

역할성능 병목 분석 및 데이터 처리 개선
기간회사 프로젝트
기여스트리밍 처리, 예외 방어, 컬럼 매핑 안정화
문제 유형Performance

01

문제와 배경

PCR 분석 결과 로딩은 프로그램의 핵심 기능이었습니다. 30MB 규모 파일을 다룰 때 화면이 멈추거나 로딩이 길어져 사용 흐름이 끊기는 문제가 있었습니다.

02

중요하게 본 지점

로딩 스피너를 추가하는 것만으로는 사용자의 불안을 줄일 수 없었습니다. 파일 전체를 한 번에 메모리에 올리는 구조 자체가 병목이었고, 일부 비정상 값이 전체 프로세스를 멈추게 했습니다.

03

실행한 일

  1. Node.js fs 스트리밍을 도입해 파일을 행 단위로 읽도록 변경했습니다.
  2. 비정상 값이 도출되면 전체 프로세스를 중단하지 않고 해당 row를 건너뛰도록 방어 로직을 추가했습니다.
  3. 컬럼 순서가 바뀌어도 이름 기반 map으로 매칭되도록 수정했습니다.

04

결과

  • 30MB 기준 로딩 시간을 3초에서 1초로 단축했습니다.
  • 비정상 값이 있어도 나머지 데이터 처리를 이어가 프로그램 안정성을 높였습니다.
  • 잘못된 매칭으로 인한 분석 오류 위험을 낮추고 데이터 신뢰도를 개선했습니다.