kokbee-Hive
article thumbnail

개요

회사의 앱이 V2로 개선되면서, 기존에 있던 푸시도 새로 개편하게 되었다. 

아직 다 개발 되지는 않았지만 하는 과정에서 했던 큐에 RabbitMQ와 redisBullQueue 대한 내용과 차이점 및 사용했던 내용을 적고자 한다.

 

 

 

 

Queue

  • RabbitMQ
    •  
    • RabbitMQ는 AMQP(Advanced Message Queuing Protocol)을 구현한 오픈소스 메시지 브로커.
    • 복잡한 라우팅, 메시지 지속성, 메시지 송수신 기능을 제공하며 분산 시스템에서 메시지를 안전하게 전달
    • RabbitMQ는 플러그인 시스템을 통해 다양한 메시지 브로커 기능을 확장하거나 변경가능.
     
  • Redis-BullQueue
    • BullQueue 는 Node.js 환경에서 Redis 이용해서 사용하는 큐
    • 라이브러리 이용해서 사용하는 큐.
    • 주로 일반적인 작업 큐, 잡 큐, 또는 워커 큐로 사용됨
    • Redis의 강력한 인메모리 데이터 구조를 활용해 빠름
    • Bull은 작업의 우선 순위 지정, 일정 예약, 실패한 작업의 재시도, 이벤트 기반 프로그래밍 등을 지원

 

 

 

RabbitMQ vs Redis-BullQueue

  RabbitMQ Redis-BullQueue
이미지
큐 방식 메세지를 안전하게 전달하는데 초점을 둔 메세지 브로커 다양한 작업을 비동기적으로 처리하기 위한 작업용 큐
프로토콜 AMQP 프로토콜
- 메시지 라우팅 및 전달을 위한 기능을 제공
Redis를 사용하여 데이터를 저장하고 큐를 관리하며, 자체 프로토콜을 사용하지 않음
스케줄링 작업의 스케줄링을 지원하지 않지만 라이브러리로 가능 Bull Queue는 작업의 스케줄링을 지원함
- ex) 예약발송
지속성 (메세지보관) rabbitMQ 서버가 띄워져 있다면, 브로커가 가지고 있다가 다시 해당 서버로 보내주거나 받는게 가능 Redis DB에 저장하고 있기에 메모리에 데이터가 없어지지 않는한 계속 가지고 있는다.
환경 개발 언어를 타지않고, 라이브러리를 통해 쉽게 사용가능 Nodejs 환경에서 주로 사용함
- nestjs도 가능

 

 

 

RabbitMQ, Redis-BullQueue 사용 및 생각

형식적인 결론이지만, 어떤 선택을 하던 개발 하는 환경과 프로덕트에 방향에 따라 선택해야한다.

내가 사용한 곳은 앱 푸시를 사용하기위해서 사용했다. 

 

서버와 서버간의 통신은 rabbitMQ로 하고, 예약발송 및 데이터를 빠르게 전송하기 위해서는 Redis-BullQueue를 사용했다.

장점은 앱푸시 같은 경우에는 발송 후에 따로 해야할 것도 없으며 순차적으로 발송하지 않아도 된다. (결과만이 중요할뿐..)

그리고 조회시 메모리DB 이기에 조회도 빠름.. 

 

nodejs 환경에서는 BullQueue 확실히 좋은것 같다.

'개발노트 > 공부' 카테고리의 다른 글

DynamoDB 모델링과 PartiQL  (0) 2023.06.02
profile

kokbee-Hive

@콕비

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!