피드로 돌아가기
Dev.toBackend
원문 읽기
Node.js 데이터 통합 파이프라인에서 Worker Threads와 Async Pool 패턴을 활용하여 대용량 파일 처리 성능을 개선했다
Two-level concurrency in Node.js - worker threads and async pools for data integration pipelines
AI 요약
Context
SaaS 플랫폼의 데이터 통합 파이프라인이 S3의 대용량 CSV 파일을 처리할 때 RAM 과부하와 Lambda 실행 시간 제한 문제에 직면했다. 순차적 처리 단계로 인해 전체 처리 시간이 증가하는 상황이었다.
Technical Solution
- 대용량 파일 → 청크 단위로 분할하여 Stream으로 처리
- CPU 집약적 파싱 작업 → Worker Threads로 분리하여 멀티코어 활용
- Worker Threads 관리 → Async Pool 패턴으로 풀 크기와 작업 할당 조정
- 파일 병렬 처리와 Worker당 작업 할당으로 처리 효율 개선
Impact
단일 코어만 사용하던 Node.js 프로세스가 멀티코어 EC2 인스턴스에서 활용 가능해졌다.
Key Takeaway
I/O 바운드 작업은 비동기로 처리하고 CPU 집약적 작업은 Worker Threads로 분리하여 병렬 처리하면 Node.js의 이벤트 루프를 효과적으로 활용할 수 있다.
실천 포인트
CPU 집약적 파싱이 필요한 대용량 CSV 통합 환경에서 Async Pool 패턴으로 Worker Threads를 관리하면 이벤트 루프를 차단하지 않으면서 멀티코어를 활용할 수 있다.