RabbitMQ

PARK JOOCHANG·2024년 8월 16일
0

RabbitMQ 란?

  • RabbitMQ는 메시지 브로커이다. 메시지 브로커는 메시지를 프로듀서로부터 컨슈머에게 전달하는 중간 매개체 역할을 한다.
  • 메시지를 Queue에 저장하고 필요할 때 적절한 수신자에게 전달

역할

  • 비동기 처리 : 데이터를 비동기 처리하여 시스템의 응답성을 높임
  • 부하 분산 : 여러 소비자에게 메시지를 분산시켜 시스템의 부하를 균형 있게 분산
  • 내결함성 : 메시지를 안전하게 저장하여 시스템 장애 시 데이터 손실을 방지

장단점

장점

  • 신뢰성
    - 메시지 지속성 : 메시지를 디스크에 저장하여 장애 발생 시 메시지 손실 방지
    - 확인 메커니즘 : 메시지 전달을 확인하는 ACK 메커니즘 지원
  • 유연성
    - 메시지 패턴 : 다양한 메시지 전달 패턴 (단일 소비자, 다중 소비자, 라운드로빈, 팬아웃, 주제 기반) 지원
    - 프로토콜 지원 : 기본적으로 AMQP 사용하지만 STOMP, MQTT 등 다양한 프로토콜 지원
  • 확장성
    - 클러스터링 : 클러스터링을 통해 높은 가용성과 부하 분산 제공
    - 분산 아키텍처 : 페더레이션 및 셰어드 노딩을 통해 분산 메시징 시스템 구축
  • 관리 및 모니터링
    - 웹 기반 관리 인터페이스로 쉽게 관리
    - 다양한 플러그인 시스템
  • 성능
    - 높은 처리량 : 높은 메시지 처리량을 제공하여 대규모 애플리케이션에 효과적

단점

  • 설정 및 운영 복잡성
    - 초기 설정이 다소 복잡할 수 있고, 클러스터링 및 분산 환경에서는 더욱 많은 설정이 필요
  • 성능 문제
    - 메시지 브로커 오버헤드 : 모든 메시지를 중앙 브로커를 통해 전달하기 때문에 높은 트래픽 상황에서는 브로커의 오버헤드가 발생할 수 있음
  • 운영 비용
    - RabbitMQ는 메모리와 CPU 자원을 많이 소비할 수 있음
  • 모니터링 및 유지보수
    - 지속적인 모니터링과 유지보수가 필요하며, 이를 위해 추가적인 인력과 비용 발생
  • 제한된 크기
    - 메세지 크기 제한 : 매우 큰 메시지 처리에는 제한이 있을 수 있음
  • 러닝 커브

구성 요소

Message

  • 메시지는 RabbitMQ를 통해 전달되는 데이터 단위

Producer

  • 메시지를 생성하고 RabbitMQ에 보내는 역할

Queue

  • 메시지를 저장하는 장소
  • 메시지는 큐에 저장되었다가 컨슈머에게 전달

Consumer

  • 큐에서 메시지를 가져와 처리하는 역할

Exchange

  • 메시지를 적절한 큐로 라우팅하는 역할
  • 프로듀서는 메시지를 직접 큐에 보내지 않고 익스체인지에 보내며, 익스체인지는 메시지를 적절한 큐로 전달

AMQP

  • AMQP는 메시지 브로커를 위한 프로토콜로 메시지의 생성, 전송, 큐일, 라우팅 등을 표준화하여 메시지 브로커가 상호 운영될 수 있게 한다.
profile
모르면 알고 넘어가자

0개의 댓글

관련 채용 정보