피드로 돌아가기
Dev.toFrontend
원문 읽기
V8 Heap Limit 극복을 위한 브라우저 기반 JSON Streaming 파이프라인 설계
How to Stream & Flatten 1GB+ JSON to CSV in the Browser Without Memory Leaks
AI 요약
Context
기존 JSON.parse() 방식은 전체 파일을 메모리에 로드하여 1GB 원본 파일 기준 최대 8GB의 Heap Memory를 소모하는 구조임. 이로 인해 V8 엔진의 Heap Limit(약 1.4GB~4GB) 초과로 인한 메모리 크래시 및 브라우저 프리징 현상이 발생함.
Technical Solution
- Streams API 및 File System Access API 도입을 통한 Chunk 단위 데이터 읽기 구현
- Web Worker 기반의 백그라운드 처리로 메인 스레드 차단 방지 및 UI 반응성 유지
- NDJSON(JSON Lines) 포맷 채택을 통한 라인 단위 독립 파싱 및 상태 머신 복잡도 제거
- Dot-notation 기반의 객체 Flattening 전략으로 계층 구조의 CSV 평면화 처리
- Local Sandbox 내 처리 구조 설계를 통한 서버 업로드 제거 및 데이터 프라이버시 확보
실천 포인트
- 메모리 제한이 엄격한 환경에서 대용량 JSON 처리 시 NDJSON 포맷 검토 - 메인 스레드 부하 방지를 위한 Web Worker 내 파싱 로직 분리 적용 - 클라이언트 사이드 스트리밍 처리를 통한 서버 비용 절감 및 보안 강화 방안 고려