피드로 돌아가기
Two-level concurrency in Node.js - worker threads and async pools for data integration pipelines
Dev.toDev.to
Backend

Node.js 데이터 통합 파이프라인에서 Worker Threads와 Async Pool 패턴을 활용하여 대용량 파일 처리 성능을 개선했다

Two-level concurrency in Node.js - worker threads and async pools for data integration pipelines

Volodymyr Koval2026년 3월 31일16intermediate

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를 관리하면 이벤트 루프를 차단하지 않으면서 멀티코어를 활용할 수 있다.

원문 읽기