Message Queue

Yeeun_Kim·2024년 12월 17일
0

1. Message Queue

Message Oriented Middleware(MOM: 메시지 지향 미들웨어)

특징
  • 비동기 처리: Producer(생상자)와 Consumer(소비자)가 독립적으로 작업을 진행하며, 생상자는 메시지를 보내고, 소비자는 이를 비동기적으로 처리
  • 분산 시스템 간 통신: 서로 다른 시스템 간의 통신을 가능하게 해주며, 분산 애플리케이션 간의 데이터를 쉽게 주고 받을 수 있도록 전달
  • 중개자 역할: 메시지를 중개하여 송신자와 수신자 간의 결합도 감소
  • 확장성: 새로운 생산자 또는 소비자를 시스템에 추가할 때, 기존 시스템에 영향을 주지 않고, 확장 가능
단점
  • 아키텍처의 관리 필요, 메시지 브로커의 설정, 모니터링, 튜닝 필요
  • 메시지가 큐를 거쳐 전달되는 방식으로 지연시간 발생 가능(실시간 응답성이 중요하다면 지연시간 발생은 단점)
  • 다수의 서버를 활용할 경우 구조가 복잡해지고 시스템 오버헤드가 발생할 수 있다.
  • Queue: FIFO(First in First out: 선입선출) 구조를 가진 자료구조
  • Message Queue: Queue라는 자료구조를 사용하여 메시지를 전달하는 시스템, MOM을 구현한 시스템

2. Message Queue의 종류

1) RabbitMQ
  • AMQP(Advanced Message Queuing Protocol)를 기반으로 한 오픈소스 메시지 큐 시스템. 안정적이고 높은 가용성을 제공하며, 큐와 토픽을 기반으로 메시지를 전달.

  • 특징
    - AMQP 프로토콜 지원
    - 다양한 언어 및 클라이언트 라이브러리 지원
    - 트랜잭션, 메시지 우선순위, 메시지 재시도 및 내구성 보장

  • 장점
    - 높은 신뢰성 및 안정성
    - 메시지 보존 및 재전송 기능
    - 다양한 메시징 패턴(큐, 토픽, Pub/Sub 등)을 지원

  • 단점
    - 성능상 제한이 있을 수 있음(특히 대규모 처리)

2) Kafka
  • 분산형 스트리밍 플랫폼이자 메시지 큐 시스템. 주로 로그 처리, 실시간 데이터 스트리밍, 이벤트 소싱 등에 사용. 높은 성능과 확장성을 제공.
  • 특징
    - 토픽 기반의 메시징 시스템.
    - 분산형 아키텍처로 수평 확장이 가능.
    - 높은 처리량과 내구성.
  • 장점
    - 대규모 데이터 스트리밍에 적합.
    - 높은 처리 성능과 확장성.
    - 데이터 복제 및 내구성 보장.
    - 지속적인 메시지 저장을 통한 시스템 장애 후 데이터 복구 가능
    - 낮은 지연 시간
  • 단점
    - 설정과 운영이 복잡할 수 있음.
3) ActiveMQ
  • Java Message Service (JMS) API를 구현한 메시지 큐 시스템으로, 메시지 큐와 토픽 기반 메시징을 지원
  • 특징
    - JMS 기반의 메시징 시스템.
    - 다양한 클라이언트 라이브러리와의 호환성.
    - 브로커 클러스터링 및 메시지 보장.
  • 장점
    - JMS 표준을 지원하여 Java 기반의 애플리케이션과의 호환성이 좋음.
    - 분산 및 클러스터링을 통해 확장 가능.
  • 단점
    - 높은 성능이 요구되는 대규모 시스템에서 성능 한계가 있을 수 있음.
4) Redis Stream
  • 로그 및 이벤트 기반의 메시지 큐 시스템을 구현 가능
  • 특징
    - 높은 성능과 빠른 데이터 처리.
    - 시간순 메시지 저장 및 여러 소비자 그룹 지원.
    - Redis의 기본 기능을 확장하여 비동기 메시징 처리 가능.
  • 장점
    - 매우 빠른 읽기/쓰기 성능.
    - Redis의 다른 기능들(캐시, 세션 관리 등)과 통합 가능.
    - 메시지 순서 보장 및 지속성.
  • 단점
    - 메시지 보존 기간이 제한적일 수 있음.
    - 고급 메시징 기능(MQ처럼 확장된 기능)에 있어 다른 시스템에 비해 기능이 부족할 수 있음.

0개의 댓글