ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Message Queue(RabbitMQ) 장점 알아보기
    MQ 2022. 6. 18. 20:44
    반응형

    이전 포스팅에서 Message Queue를 적용할 수 있는 간단한 사례에 대해 설명했다.
    이번 포스팅에서는 MQ중에서도 RabbitMQ의 장점에 대해 알아보려고 한다.


    그저 선입선출(FIFO)의 자료구조인가?

    Fifo icons created by juicy_fish - Flaticon https://www.flaticon.com/free-icons/fifo

    MQ의 적용 사례야 어느정도 알았는데, 이 메세지 큐(메세지 브로커)가 CS에서 배우는 자료구조와 별다를 것이 없다면 사용하는데에 이점이 별로 없을 것이다. 하지만 그렇지 않다. RabbitMQ는 개발자 관점에서 편리하고 강력한 기능을 제공한다. 그 내용은 아래와 같다.

    - 와이어 레벨 프로토콜

    RabbitMQ가 AMQP(Advanced Message Queuing Protocol)을 구현했기 때문에 나타나는 장점인데, 바이트 스트림으로 데이터를 조작하므로 구현 언어에 관계없이 상호 운용이 가능하다는 것이다. 이는 다시 말하면 메세지를 발행하는 쪽(Publisher)과 소비하는 쪽(Consumer)간의 구현 언어가 달라도 시스템 구성이 가능하다는 말이다. 이것은 개발 측면이나 상업적인 관점으로 봤을 때 큰 이점이라고 할 수 있다. Consumer 쪽의 제품을 구현해놓고, Queue Server Configuration 정도만 가변적으로 가져가면 특정 시스템에 구애받지 않고 도입이 가능하기 때문이다. 위와 같은 특징 때문에 RabbitMQ에서는 여러가지 언어로 Client Library를 제공하는데, 그 언어들은 아래와 같다.
    -> Java(Spring Framework), .NET Framework, Ruby, Python, PHP, Javascript(Node), Go, Objective-C and Swift, C, C++, 그 밖에 많이....(여기서 확인할 수 있다.)

    - 모니터링

    Queue Server를 사용하다보면 해당 서버에 대한 모니터링도 상당히 중요하다. RabbitMQ에서는 관리 UI를 제공하는데, 터미널에서 명령어로 활성화를 해주고, 모니터링을 위한 포트(default: 15672)만 열어주기만 하면 된다.

    rabbitmq-plugins enable rabbitmq_management
    


    또한 모니터링 데이터를 직접 받는것도 가능하다. RabbitMQ에서 HTTP API로 JSON을 제공한다.
    GET /api/overview is the HTTP API endpoint that returns cluster-wide metrics
    GET /api/nodes/{node} returns stats for a single node
    GET /api/nodes returns stats for all cluster members
    위의 API들을 호출하여 지속적으로 로깅을 하는 등의 행위도 가능해 보인다. 어떤 데이터를 확인할 수 있는지는 여기에서 확인할 수 있다.

    - Customizing(Configuration)

    큐, 메시지, 시스템 설정들을 직접 구성할 수 있다. 다만 설정할 수 있는 것들이 너무 많아서.... 다 알긴 힘들고 그때마다 필요한 구성이 가능한지 찾아보고 적용하면 된다. 해당 가이드는 여기에서 확인할 수 있다.


    - 그 밖에도 기본적으로 메시지 브로커에 필요한 기능들인 Message Routing, Queue Clustering, High Availability(여기서는 Mirroring이라는 개념이다.) 역시 지원하고, 다양한 플러그인들도 지원한다. 장점에 대한 내용들은 여기에서 확인할 수 있다.


    마치며

    이번 포스팅에서는 RabbitMQ의 강점에 대해 다뤄봤다.
    여러가지 메시지 브로커들이 있는데, 각각 비교하고 큐를 선택하는데에 도움이 된 것 같다.

    반응형

    'MQ' 카테고리의 다른 글

    Message Queue(RabbitMQ)와 AMQP  (0) 2022.05.21

    댓글

Designed by Tistory.