Node.js 프로젝트를 위한 라이브러리를 만들었습니다.
안녕하세요,
Promise.all은 배열에서 가장 긴 프로미스가 청크의 실행 시간이 됩니다.
이로 인해 가장 긴 프로미스가 완료될 때까지 다음 프로미스가 아무 작업도 수행하지 않는 비효율적인 문제가 발생합니다.
저는 이 문제를 효과적으로 해결하기 위해 "Arehs"를 만들었습니다.
🤔 WHY AREHS?
아레스는 이벤트 중심의 chunk processing을 지향하는 최상의 대규모 배치 처리를 보장합니다.
이는 첫 번째 비동기 작업 호출이 완료될 때까지 기다리지 않고 다음 비동기 작업 호출을 즉시 할당하여 조밀하게 프로세스를 수행합니다.
이를 통해 다음과 같은 여러 가지를 달성할 수 있습니다:
프로미스의 동시성을 설정하여 서비스 처리량을 제어할 수 있습니다.
프로미스의 동시성을 설정하여 다운스트림 서비스의 부하를 관리합니다.
애플리케이션의 성능 향상
CPU 유휴 시간 감소 등
Promise.all
보시다시피, Promise.all은 배치에서 가장 느린 프로미스만큼 오래 실행됩니다.
따라서 메인 스레드는 기본적으로 "아무것도 하지 않는" 상태이며 가장 느린 요청이 완료되기를 기다리고 있습니다.
Promise 배열에서 가장 긴 프로미스인 4번이 청크의 실행 시간이 됩니다.
이로 인해 가장 긴 프로미스가 완료될 때까지 다음 프로미스가 아무 작업도 수행하지 않는 비효율적인 문제가 발생합니다.
Arehs
Arehs는 프로미스 풀 패턴을 실행하여 Node.js의 메인 스레드를 최대한 활용하는 것이 핵심입니다.
활용도를 높이려면 API 호출(또는 다른 비동기 작업)을 조밀하게 패킹하여 가장 긴 호출이 완료되는 동안 기다리지 않도록 해야 합니다.
기다리지 않고 첫 번째 호출이 완료되는 즉시 다음 호출을 예약합니다.
https://www.npmjs.com/package/arehs?activeTab=readme
README 한글판: https://github.com/seongjin605/arehs/blob/main/README_KR.md