logo

Promise Pool로 성능 개선하기 (feat. Promise.all)

language-logoNodeJS

• Node.js 환경에서는 Promise.all을 이용해 다수의 비동기 작업을 처리할 수 있으며, 이를 통해 대량의 API 조회, 쿼리 조회, 이벤트 메세지 발행 등의 작업을 수행할 수 있다. 하지만 Promise.all을 이용할 때는 데이터베이스의 커넥션풀 제한 등을 고려하여 적당량의 chunk로 분할해서 수행해야 한다.
• Promise Pool 방법은 지정한 개수 만큼의 레일을 깔아두고 이 자리를 Promise 들이 계속 채워가는 형태로, 가장 긴 Promise가 끝나기 전까지 다음 Promise들이 작업을 하지 않는 비효율을 개선할 수 있다. 이를 위해 @supercharge/promise-pool 등의 라이브러리를 활용할 수 있다.
• 이 글은 Promise.all과 Promise Pool의 성능 차이를 비교하는 내용을 담고 있다. Promise.all은 각 작업 단위에서 가장 긴 작업 시간이 전체 작업 시간이 되지만, Promise Pool은 동시에 여러 작업을 처리할 수 있어 더 효율적이다.
• 테스트 결과, 1,000개의 Promise를 처리하는데 Promise.all은 약 40초가 걸렸으나, Promise Pool은 약 20초만에 처리했다. 이를 통해 동일한 작업을 처리하는 경우 Promise Pool이 Promise.all보다 두 배 빠른 성능을 보여준다.

thumbnail
북마크
공유하기
신고하기
7분 분량
조회수 304
profile-image향로
2년 전
Copyright © 2025. Codenary All Rights Reserved.