본문 바로가기

Other Service

[이론] Amazone MQ (Message Queue) 기본 개념

반응형

안녕하세요 서후아빠입니다. ^_^

이번 세션은 MQ에 대해서 업무적으로 필요한 최소한의 개념에 대해서 간단히 정리해 보았습니다.


MQ (Message Queue)

메시지 기반의 미들웨어, MOM(Message Oriented Middleware) 구현한 솔루션

비동기 메시지를 사용하는 서비스들 사이에서 데이터 교환 역할

동기식 통신 방식은 요청받은 메시지 전부 처리할때까지 요청에 대해서 blocking 상태가 되지만, 비동식 통신 방식은 queue에 넣어 놓으면서 요청은 계속 받을 수 있다.

종류 

구분 Apache ActiveMQ Rabbit MQ IBM MQ Kafka
비용 오픈소스   오픈소스 상용 오픈소스
기반 자바기반 JMS 큐지원 Erlang OTP 기반 표준 JMS 메시징 기반 메시지 헤더 통한 TCP 통신
프로토콜 지원 MQTT, AMQP, OpenWire, STOMQ AMQP MQTT -
기타 REST API를 통해 웹기반 메시징 API 지원
Ajax 통해 순수한 DHTML 사용한 웹 스트리밍 지원
실시간 모니터링 용이
다양한 언어 및 OS 지원
RabbitMQ 서버간 클러스터링 지원
- TPS 우수하나 기능이 적음
자바 애플리케이션일 경우 Active MQ, AMQP프로토콜 통신이 필요할 경우 Rabbit MQ, TPS가 높은 고성능 애플리케이션의 경우는 Kafka를 고려할 수 있습니다.

MQ vS Kafka 

구분 MQ Kafka
메시지 전달 방식 producer --> broker --> consumer
(broker가 producer로부터 메시지 받아서 consumer에게 전달하는 push 방식)
broker <-- consumer
(broker에게 pull 방식으로 메시지 가지고 가는 구조)
특징 다양한 기능 제공 consumer가 자신의 처리능력만큼 가져오기 때문에 최적 성능 유지 가능

구성요소

구분 설명 비고
producer 메시지를 생성하고 발송하는 주체  
broker 메시지를 건네주는 중개자   
destination queue or topic 중 선택하여 목적지 배달
- queue : point to point (consumer는 메시지 받기 위해 경쟁)
- topic : publish to subscribe
Active MQ
exchange producer에게 받은 메시지를 어떤 queue에게 발송할지 결정하는 객체 (라우터 역할) Rabbit MQ
binding exchange에게 메시지를 라우팅할 규칙을 지정하는 행위 (메시지를 queue 연결) Rabbit MQ
queue producer가 발송한 메시지가 consumer가 소비하기 전까지 보관하는 장소 Rabbit MQ
consumer 메시지를 수신하는 주체  

Amazon MQ (Active MQ, Rabbit MQ 지원)

Amazon MQ는 "Amazon SQS + Amazon SNS" 비슷하지만, 아래처럼 차이점이 있습니다.

구분 Amazon MQ Amazon SQS
메시지 Bianry 지원 Text만 지원
메시지 크기 제약없음 (브로커당 Max 200GB) 최대 256KB
메시지 보존기간 영구 60초~15일
메시지 임시 보관 queue, topic, Publish / Subscribe 등
다양한 기능 지원
queue 지원, topic은 Amazon SNS 활용,
Publish / Subscribe미지원
메시지 전송 comsumer에게 push consumer로부터 pull
메시지 타이머 제한없음 (ScheduleSupport 기능) 최대 15분

Amazon MQ 사용 이유는 아래와 같습니다.

구분 설명 비고
호환성 자바와 완벽한 호환성
AWS 의존적이기 않기 때문에 향후 다른 클라우드로(or On-Premise) 마이그레이션 용이
 
기능 Publish / Subscribe 지원
ScheduleSupport 기능으로 제한 없은 지연 전송, Cron 기능으로 특정 일시 전송
 
전달 보증 수신측에 서비스 상태 변경(불가 > 가능)에 대해서 전달 보증 (ex : 예약 시스템 경우 신뢰성 중요)  
전달 방식 push 방식으로 메시지 수신 처리의 개발 복잡도 감소
(pull 방식은 1차로 데이터 수신 처리하고, 2차로 queue 데이터 삭제 처리 필요)
 
테스트 용이 embedded broker 제공으로 로컬환경에서 자동화된 테스트 편리  
지연 시간 단축 10밀리초 미만의 메시지 지연 시간 제공 (AWS 보증)  

 

반응형