동시성 제어 기법
BullQueue란?
- Node.js에서 사용하는 Redis 기반 분산 작업 큐로 분산 환경에서 작업을 처리하고 관리할 수 있다.
- 비동기 작업을 큐에 추가하여 처리할 수 있으며, 이러한 작업은 백그라운드에서 실행되고 FIFO 방식에 따라 순서대로 처리된다.
- Node.js에서는
@node_modules/bull
package를 제공한다.
- 작업 관리: 큐에 작업을 추가하고, 작업의 상태를 추적하고, 작업을 실행 및 완료할 수 있다. 작업은 비동기적으로 실행되며, 결과나 상태 변경은 이벤트를 통해 처리할 수 있다.
- 작업 우선순위: 작업에는 우선순위를 부여할 수 있다. 우선순위에 따라 큐에서 처리되는 순서가 달라질 수 있어, 중요한 작업이 먼저 처리되도록 조절할 수 있다.
- 작업 재시도 및 실패 처리: 작업이 실패한 경우, BullQueue는 재시도 및 실패 처리를 지원한다. 재시도 횟수나 실패 처리 전략은 개발자가 설정할 수 있으며, 오류에 대처하고 안정적인 작업 처리를 보장할 수 있다.
- 작업 상태 모니터링: 작업의 상태를 모니터링하고 추적할 수 있는 기능을 제공한다. 작업의 진행 상황을 확인하고, 완료 또는 실패 여부를 확인할 수 있다.
BullQueue와 Redis의 관계
BullQueue는 Redis를 메시지 브로커로 사용하여 작업 대기열을 관리합니다.
Redis는 메모리 기반의 데이터 저장소로서 속도가 빠르고, PUB/SUB(Publish/Subscribe) 메커니즘을 지원합니다. BullQueue는 이러한 Redis의 특성과 기능을 활용하여 작업의 상태, 데이터, 우선순위 등을 저장하고 관리합니다.
BullQueue는 Redis의 키-값 저장소를 활용하여 작업 정보를 저장하고, Redis의 리스트나 셋 등의 데이터 구조를 사용하여 작업 대기열을 구성합니다. 작업을 추가하면 해당 작업은 Redis에 저장되고, 작업자는 Redis에서 작업을 가져와 처리합니다. 작업의 상태 변경이나 진행 상황 업데이트는 Redis를 통해 이루어집니다.
BullQueue 프로젝트 적용기
Bull Queue를 이용한 동시성 제어