개발 메모장

[MOM] RabbitMQ(2) - 정의 본문

MOM

[MOM] RabbitMQ(2) - 정의

yyyyMMdd 2024. 8. 20. 11:07
728x90

#. RabbitMQ란 무엇인가?

  • AMQP(Advaced Message Queing Protocol)를 기반으로 하는 MOM을 위한 표준  프로토콜로 시스템 간의 정보 교환 및 메시지 송수신을 지원하는 메시지 브로커입니다.

  • Producer와 Consumer 간의 메시지 송수신의 중개 역할을 하며 비동기적으로 통신할 수 있도록 하여 결합도를 줄이고 유연성을 제공합니다.

#. RabbitMQ의 구성

 

  • Queue
    - FIFO 방식으로 동작하며, Producer에 의해 생성된 메시지가 소비되기 전까지 저장되는 곳이고 Consumer에 의해 사용됩니다.

  • Exchange
    - 메시지를 받아 Producer의 의도에 맞는 Queue로 라우팅하는 역할을 합니다.
    - 메시지는 Exchange로 보낸 후 Queue로 라우팅되어 전달됩니다.

  • Binding
    - Exchange와 Queue 간 연결을 설정하는 것으로 어떻게 전달할 지를 결정합니다.

  • Producer
    - 메시지를 생성하여 Exchange에 보내는 역할입니다.

  • Consumer
    - Queue로부터 메시지를 받아 처리하는 역할을 합니다.
    - Consumer가 Queue에서 메시지를 가져와 처리하면 RabbitMQ는 Queue에서 메시지를 제거합니다.

#. Exchange Routing 전략

 

  • 다양한 라우팅 요구사항 및 사용 사례에 대한 적합한 유형의 Exchange를 지원하므로 요구에 맞추어 적절한 방법을 선택할 수 있습니다.

    1. Direct Exchange

    - Queue와 Exchange가 특정 라우팅 키를 이용해 바인딩 되어 해당 Queue에 메시지를 전달합니다.

    - 특정 Queue에 메시지가 하나씩 전달됩니다.


    2. Fanout Exchange

    - 라우팅 키와 상관없이 바인딩 된 모든 Queue를 대상으로 메시지를 전달합니다.


    3. Topic Exchange

    - 특정 라우팅 키 패턴을 기반으로 하나 이상의 Queue에 전달합니다.

    - Pub / Sub과 같은 패턴에서도 사용됩니다.


    4. Headers Exchange

    - 라우팅 키가 아닌 메시지 속성 중 Headers 테이블을 사용해  특정 규칙의 라우팅을 처리합니다.

    - 메시지 Header의 값을 기반으로 라우팅됩니다.

https://www.cloudamqp.com/blog/part1-rabbitmq-for-beginners-what-is-rabbitmq.html


#. 특징

 

1. 다양한 메시징 패턴 지원


- Pub / Sub, 요청 및 응답, 라우팅, 큐 등 다양한 메시징 패턴을 지원합니다.


- Queue는 Consumer가 메시지를 소비할 때까지 메시지를 저장할 수 있습니다.

 


2. 다양한 플러그인 지원


- 다양한 플러그인을 지원하기에 시스템의 기능적 확장이 용이합니다.

 


3. 확장성


- 클러스터에 노드를 추가해 수평적으로 확장할 수 있으며 이를 통해 증가된 로드를 처리할 수 있습니다.


- 메시지를 여러 대기열에 분산시켜 로드 균형을 조절할 수 있는 샤딩을 지원합니다.

 


4. 보안성
- 사용자 계정의 LDAP 등 다양한 인증 메카니즘을 지원합니다.


- 권한 및 역할 부여를 통해 세분화 된 엑세스 제어가 가능합니다.


- 또한 SSL/TLS를 통한 암호화된 통신을 지원합니다.


#. 장점 및 단점

 

  • 장점

    1. 유연한 라우팅

    -Direct, Fanout, Topic, Headers Exchange를 통해 복잡한 라우팅 바인딩을 지원합니다.


    2. 신뢰성 높은 메시징

    - 메시지 내구성, 트랜잭션을 지원하여 메시지가 손실되지 않도록 보장합니다.


    3. 높은 가용성

    - 클러스터링 또는 미러링 Queue를 설정해 가용성과 장애 내성을 향상시킬 수 있습니다.


    4. 관리 도구

    - 웹 기반 관리 인터페이스, 명령줄 도구, HTTP 기반 API를 제공하여 브로커를 모니터링하고 관리할 수 있습니다.

  • 단점

    1. 복잡한 구성

    - 클러스터, 고가용성 및 샤딩 설정 및 관리는 복잡하고 신중한 구성이 필요합니다.


    2. 오버헤드

    - 추가 기능 등으로 인해 성능에 영향을 미칠 수 있는 오버헤드가 발생할 수 있습니다.


    3. 확장성 한계

    - RabbitMQ는 수평 확장을 지원하지만, 매우 대규모 배포의 경우 일부 다른 메시징 시스템에 비해 관리가 어려울 수 있습니다.


    4. 자원 소모

    - 메시지 지속성과 미러링과 같은 기능을 사용할 때 브로커의 자원 소모가 상당할 수 있습니다.

#. 위와 같이 RabbitMQ에 대해 간략하게 알아보았습니다.


#. 다음 내용부턴 예제에 대한 소스를 살펴보도록 하겠습니다.

 

===========================================================
틀린 내용이 있거나 이견 있으시면 언제든 가감 없이 말씀 부탁드립니다!
===========================================================

728x90

'MOM' 카테고리의 다른 글

[MOM] RabbitMQ(4) - Consumer 예제  (0) 2024.08.22
[MOM] RabbitMQ(3) - Producer 예제  (0) 2024.08.21
[MOM] RabbitMQ(1) - 도커 설치  (0) 2024.08.19