- 프로세스 부하를 적게 유지할 수 있다.예를 들어 사용자가 임의의 시간에 리소스부하가 큰 작업을 실행할 시 동기적으로 실행하는대신 큐에 작업을 임시로 저장할 수 있다.워커프로세스는 정해진 절차에 따라 큐에서 작업을 할당받아 작업할 수 있다.어플리케이션으 스케일업에 따라 consumer를 쉽게 스케일업(cousumer수 증가)할 수 있다.
- Node.js 이벤트루프를 중단시킬 수 있는 monolithic작업을 분리시킬 수 있다.예를 들어 유저가 cpu-intensive한 작업을 실행할 시 해당 작업을 다른 프로세스에 위임할 수 있다.이에 따라 유저의 요청을 직접 처리하는 프로세스의 부하를 줄여준다.
- 다양한 서비스를 간에 안정적인 커뮤니케이션 채널을 확보할 수 있다.예를들어 하나의 프로세스에서 작업을 큐에 저장하고 다른 프로세스(서비스)에서 이를 consume한다.완료,에러등의 job lifecycle상태변화를 다른 프로세스(서비스)에서 event-listening을 할 수 있다.producer나 cousumer가 실패할 시 스테이트는 보존되며 작업은 자동적으로 재시작될 수 있다.
출처
https://docs.nestjs.com/techniques/queues