[RabbitMQ] RabbitMQ 기본정리

LDB·2025년 10월 13일

RabbitMQ

목록 보기
2/7
post-thumbnail

❓작성계기

작성계기는 하단의 게시글에서 말했듯이 프로젝트에 현재 사용하고 있고 원리를 파악하고 실제로 적용해보고자 작성하게 되었습니다.

https://velog.io/@half-phycho/RabbitMQ-AMQP란-무엇인가

이전 게시글에서는 RabbitMQ의 상위 개념인 AMQP에 대해 학습을 해보았으니 이제는 본격적으로 RabbitMQ에 대해 이론적으로 알아보고 다음 게시글에서는 실제로 RabbitMQ를 설치하고 운영해보도록 하겠습니다.

📚 RabbitMQ란 무엇인가?

RabbitMQ는 간단히 이야기하면 AMQP의 구현 체중 하나로 AMQP 프로토콜 기반의 경량화된 메시지 브로커 시스템입니다. 주로 요청을 많은 사용자에게 전달하는 경우, 많은 작업이 요청되어 처리해야 할 경우, 요청에 대한 처리시간이 긴 경우에 주로 사용됩니다. 이러한 특징으로 마이크로 서비스, 분산 시스템, 서버리스 아키텍처 등 다양한 현대적인 애플리케이션에서 널리 사용되고 있습니다.

메시지 브로커
서로 다른 언어로 작성되었거나 다른 플랫폼에서 구현된 애플리케이션, 시스템, 서비스 간의 통신과 정보 교환을 가능하게 하는 소프트웨어를 부르는 말 입니다.


💡 AMQP의 구현체들

그렇다면 다른 AMQP의 다른 구현체도 있다는 이야기인데 AMQP의 구현체는 다음과 같습니다.

  • RabbitMQ
  • ActiveMQ
  • IBM MQ
  • Azure Service Bus

이거 외에 StormMQ, OpenAMQ등 다른 AMQP구현체들이 많습니다, 이중에서 가장 많이쓰고 익숙한거는 RabbitMQ라고 생각합니다.


👍 RabbitMQ의 장점

RabbitMQ의 장점에 대해서는 타 게시글을 인용했지만 제가 생각하는 장점만 적어보겠습니다.

1. 다양한 통합 옵션 지원 : 다양한 프로그래밍 언어와 프레임워크를 지원하며, REST API, WEB Socket등을 통한 다양한 통합이 가능합니다. (실제로 제가 다니는 회사에서는 RabbitMQ를 WEB Socket와 통합하여 사용합니다.)

2. 다중 프로토콜 지원 : 공부하면서 알게되었는데 RabbitMQ는 기본적으로 AMQP 프로토콜이지만 MQTT, STOMP와 같은 다양한 메시징 프로토콜을 지원합니다.

3. 높은 메시징 처리량 : 메모리와 디스크에 메세지 저장이 가능하여 높은 메시지 처리량과 함께 높은 가용성을 제공합니다. 이로 인해 RabbitMQ가 대규모 분산 시스템에서도 안정적으로 사용 될 수 있습니다.

4. 트랜잭션 지원 : 메시지 발생, 메시지 확인, 삭제 등의 작업을 하나의 트랜잭션으로 묶어서 처리가 가능하여 데이터의 일관성과 신뢰성을 높이는 데 도움이 됩니다.


😕 RabbitMQ의 단점

모든 기술이 그렇듯 장점만 있는 것이 아니라 반드시 단점도 존재합니다.

러닝커브 상승 : 아무래도 저는 학습 러닝 커브가 상승하는 것을 뽑을 거 같습니다. RabbitMQ는 다양하고 강력한 기능들이 있는 만큼 이해하고 사용하기까지 많은 시간과 노력이 필요합니다, 또한 메시지의 신뢰성을 보장하기 위한 다양한 설정(메시지 지속성, 메시지 확인 등)을 올바르게 구성하기 위해서도 공부가 필요하다고 느꼈습니다.


😎 이론지식을 보고 느낀점

RabbitMQ를 들어가기 전에 AMQP를 먼저 공부를 하고 RabbitMQ를 보면 어느 정도 이해할 수 있을 줄 알았는데 솔직히 이야기하면 아직도 이해 못 하는 용어투성이입니다. 하지만 지금까지 이러한 경우들은 수없이 있었습니다. 대학생 때 처음으로 Spring Boot을 배울 때에도 첫 직장에서 처음으로 복잡한 쿼리를 작성할 때도 그리고 지금 회사에 들어오기 위해 AWS를 공부할 때도 어려운 것, 이해가 힘든 것투성이였습니다. 그렇기에 이 RabbitMQ도 똑같이 어려워하고 지속적으로 공부하여 저의 것으로 만들기 위해 노력하다 보면 어느 순간 익숙해질 것으로 생각합니다.


📋 참고 사이트

https://www.ibm.com/kr-ko/think/topics/message-brokers

https://velog.io/@sdb016/RabbitMQ-%EA%B8%B0%EC%B4%88-%EA%B0%9C%EB%85%90

https://yuna-ninano.tistory.com/entry/%EB%A9%94%EC%8B%9C%EC%A7%80-%ED%81%90-RabbitMQ%EB%9E%80-%EA%B0%9C%EB%85%90-%ED%8A%B9%EC%A7%95-%EC%9E%A5%EB%8B%A8%EC%A0%90-%EB%A9%B4%EC%A0%91-%EB%8C%80%EB%B9%84

(항상 감사합니다.)

profile
가끔은 정신줄 놓고 멍 때리는 것도 필요하다.

0개의 댓글