반응형
안녕하세요 서후아빠입니다. ^_^
이번 세션은 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 보증) |
반응형
'Other Service' 카테고리의 다른 글
[Tip] Support Center 사용하는 방법 (0) | 2022.12.27 |
---|---|
[실습] Amazon MQ 구성하기 (ActiveMQ) (0) | 2022.09.07 |
[실습] AWS CLI 설치 및 CLI 로그인 방법 알아보기 (0) | 2022.07.15 |
[Tip] 고정 IP를 제공하여 Amazon EMR을 생성하는 방법 알아보기 (0) | 2022.07.05 |
[이론] Amazon API Gateway 기본 개념 (0) | 2022.07.02 |