[RabbitMQ] Message System을 사용하는 이유
이번 글에서는 RabbitMQ, Kafka 같은 메세지 시스템을 사용하는 이유에 대해 알아보겠습니다.
0. Message System이란?
Application간 메세지를 주고받는 Communication Mechanism을 의미합니다.
주로 사용되는 메세징 시스템에는 RabbitMQ와 Kafka 등이 있습니다.
1. Message System이 없다면?
대규모 Enterprise 환경에서 만약 메시지 시스템을 사용하지 않고 구현한다면 아래와 같은 문제점이 발생하게됩니다.
✔ Real-Time 어플리케이션 구현이 어렵습니다.
만약 아래와 같이 3개의 독립된 어플리케이션(HR, Marketing, Directory) 이 존재할 때, 메시지 시스템이 없다면 각 시스템의 정보를 가져오기위해선 특정 시간별 Pull/Push을 통해서 데이터를 가져오거나 내보내야합니다.
예를 들어 신규 입사자가 생겨 HR 시스템에 정보를 등록한다면, Marketing 시스템은 해당 정보를 알 수 있는 방법이 없으므로 주기적으로 HR 시스템을 체크할 수 밖에 없습니다. 따라서 각 시스템간에는 정보의 Delay가 생기게 됩니다.
✔ 대규모 시스템에서는 무수히 많은 데이터 교환 엔드포인트가 존재하게됩니다.
만약 아래와 같이 어플리케이션들이 존재할 때 통합된 메시지 시스템이 없다면 각 어플리케이션 별 통신 Protocol과 Data format 등이 무분별하게 사용될 수 있습니다. 따라서 이를 관리하는데는 많은 비용이 소모됩니다.
2. Message System을 사용한다면?
✔ Real-Time 어플리케이션을 구현할 수 있습니다.
아래와 같이 각 독립된 어플리케이션은 RabbitMQ와 같은 메세지 시스템을 통해 실시간으로 데이터를 주고 받을 수 있게됩니다.
✔ 데이터 교환 엔드포인트를 하나로 통합해 관리할 수 있습니다.
아래와 같이 모든 데이터는 RabbitMQ와 같은 메세지 시스템 엔드포인트를 통해 주고받게 됨으로써, 관리가 쉬워지며 모든 어플리케이션은 통합된 Protocol과 Data format을 사용하게됩니다.
위와 같은 이유로 메세지 시스템은 현대 어플리케이션에는 필수이며, 그 중 RabbitMQ와 Kafka등이 대표적인 오픈소스 메시지 시스템입니다.
3. RabbitMQ
대표적인 오픈소스 메시지 시스템으로 쉬운 관리가 특징입니다.
RabbitMQ의 역할을 그림으로 요약하자면 아래와 같이 표현할 수 있습니다. 메세지 생산자(Publisher)가 메세지를 특정 Exchange & Queue에 전달하면, RabbitMQ는 해당 메세지를 적절한 구독자(Subscriber)가 소비(Consume)할 수 있도록 해당 메세지를 전달하는 역할을 수행합니다.
RabbitMQ에서 사용하는 용어는 아래와 같습니다.
• Queue : 메세지를 담아놓는 Buffer입니다.
• Exchnage : 메세지를 적절한 Queue로 옮기는 Routing 역할을 수행합니다.
• Routing Key : Exchange가 Routing 할 때 사용하는 Key 입니다.
• Binding : Exchange와 Queue를 Link하는 것 입니다.
참고 자료 : https://www.udemy.com/course/rabbitmq-java-spring-boot-for-system-integration/
'Spring Cloud > RabbitMQ' 카테고리의 다른 글
[RabbitMQ] JSON Message Format 사용하기 - 2 (0) | 2021.11.01 |
---|---|
[RabbitMQ] JSON Message Format 사용하기 - 1 (0) | 2021.11.01 |
[RabbitMQ] Scheduling 사용하기 (0) | 2021.11.01 |
[RabbitMQ] Spring boot 기본 사용법 (0) | 2021.11.01 |
[RabbitMQ] Multiple Consumer 사용하기 (0) | 2021.11.01 |
[RabbitMQ] Prefetch (0) | 2021.10.25 |
RabbitMQ - 레빗엠큐 개념 및 동작방식, 실습 (0) | 2021.04.24 |
Springboot - Rabbitmq를 이용한 비동기 메시징 서비스(리액티브 마이크로서비스) (0) | 2021.04.19 |