정보관리기술/최신서비스

메시지 큐잉

아이티신비 2024. 5. 6. 09:00

문제1) 메시지큐잉에 대한 개념과 필요성, 종류, 기능에 대하여 설명하시오

답)

 

1. 메시지큐잉에 대한 개념과 필요성

가. 메시지큐잉의 개념

개념
서로 다른 응용 프로그램 사이에서 비동기 메시지를 사용하여 데이터 송수신을 위한 메시지 지향 미들웨어(Meesage Oriented Middleware: MOM)를 구현한 시스템
개념도
관련 개념
메시지 지향 미들웨어(Message
Oriented Middleware : MOM)
분산 시스템 간 메시지를 주고 받는 기능을 지원하
는 소프트웨어나 하드웨어 인프라
메시지 큐(Message Queue : MQ)
MOM을 구현한 시스템
브로커(Broker)
Message Queue 시스템
AMQP(Advanced Message
Queueing Protocol)
메시지 지향 미들웨어를 위한 프로토콜

 

나. 메시지큐잉의 필요성

필요성
설명
확장성
  • 기능 별로 모듈을 분리하여 구성하기 때문에 확장에 용이
데이터의 영속성
  • 데이터를 메모리 대신에 디스크에 저장하여 데이터 유실을 방지
고가용성 유지
  • 다소 지연시간을 희생하는 한이 있더라도 서비스 규모에 독립적으로 언제나 이용할 수 있는 상태를 유지
장애 복원력
  • 단일 장애점 해소
  • 시스템 일부에 장애가 발생하더라도 전체적으로 영향을 주지 않음
  • 메세지가 큐에 추가되어 있으므로 혹시라도 어떤 모듈에서 장애가발생하였더라도 해당 모듈 복구 후 작업을 마저 수행하는 것이 가능
  • Producer(생산자)가 Message를 Queue에 넣어두면, Consumer가 Message를 가져와 처리하는 방식
  • 대표적인 MQ에는 RabbitMQ, ActiveMQ, ZeroMQ, Kafka 있음

 

2. 메시지큐잉의 종류와 기능

가. RabbitMQ의 개념과 기능

구분
설명
개념
  • AMQP(Advanced Message Queueing Protocol) 프로토콜을 구현한 메시지 브로커로 생산자에게 메시지를 받아 소비자에게 전달해 주는 오픈소스 메시지 브로커 소프트웨어
개념도
구성요소
Producer
  • 메세지를 생성하고 발송하는 주체
  • Queue에 직접 접근하지 않고, 항상 Exchange를 통해 접근
Consumer
  • 메세지를 수신하는 주체
  • Queue에 직접 접근하여 메세지를 가져옴
Queue
  • Producer들이 발송한 메세지들이 Consumer가 소비하기 전까지 보관되는 장소
Exchange
  • Producer들에게서 전달받은 메세지들을 어떤 Queue들에게 발송할지를 결정하는 객체, 일종의 라우터
  • 유형: fanout, direct, topic, header
Binding
  • Exchange에게 메세지를 라우팅 할 규칙을 지정하는 행위
주요기능
메시지 분배
(Round-robin dispatching)
  • Consumer가 병렬처리를 쉽게 할 수 있도록 같은 Queue를 바라보고있는 Consumer에게 메시지를 균등 분배
Fair dispatch
(공평한 분배)
  • busy한 서버에게 메시지를 계속 전달하지 않도록 prefetchCount라는 개념 사용하여 prefetchCount가 1일때는 아직 ack를 받지 못한 메시지가 1개라도 있으면 다시 그 consumer에게 메시지 할당하지 않음
메시지 수신 통보
(Acknowledgment)
  • 많은 프로토콜들이 메시지 전달 보장을 해 Acknowledgment(ACK)라는 개념을 사용하여 메시지에 대한 응답을 보냄
  • 확장성이 뛰어나며 Spring에서도 AMQP연동 라이브러리가 제공되어 편리하게 연동하여 사용가능

나. ActiveMQ의 개념과 기능

 
구분
설명
개념
  • 아파치 소프트웨어 재단의 오픈소스 프로젝트로, 기업 연동 작업을 쉽고 확장성있게 구현할수 있도록 지원하는, 고기능 JAVA 메시지 기반 미들웨어(MOM )이며 통합패 (Intergration Patterns) 서버
개념도
구성요소
JMS
(Java Message
Service)
  • 자바 플랫폼, 엔터프라이즈 에디션(EE) 기반이며, 메시지 생성, 송수신, 읽기를 하며 또한 비동기적이며 신뢰할 만하고 느슨하게 연결된 서로 다른 분산 어플리케이션 컴포넌트 간의 통신을 허용
  • 다른 MOM(AMQP, SMTP 등)과의 통신은 불가능
주요 기능
JMS준수
  • 동기와 비동기 메시지 전달과 1:1 메시지 전달, 구독자들에게 메시지전달 보장을 제공
연결성
  • HTTP/S, IP multicast, SSL, STOMP, TCP, UDP, XMPP 등의 프로토콜의 지원을 포함하여 넓은 영역의 연결옵션을 제공.
  • 넓은 영역의 프로토콜 등의 지원은 시스템에 유연성을 제공
플러그 방식의 저장
과 보안
  • 다양한 저장매체를 사용 가능
  • ActiveMQ의 보안성은 원하는 최상의 인증과 승인 정의 가능
다양한 어플리케이션 간의 통합
  • WAS(Web Application Server)와 ActiveMQ를 통하여 다양한 어플리케이션 간의 통합 제공
다양한 언어의 클라
이언트를 위한 API제공
  • Java 뿐만 아니라 C/C++, NET, Perl, PHP, Python, Ruby 등의 많은 언어를 위한 API를 제공
브로커 클러스터링
  • 다수의 ActiveMQ브로커는 확장성을 위해 브로커의 연합네트워크로서 함께 동작 함
많은 전문적인 브로
커기능과 클라이언트 옵션
  • 브로커와, 브로커에 연결하는 클라이언트 모두에게 다양한 기능을 옵션으로 제공
단순한 관리
  • JMX(Java Management eXtensions)를 통하여 JConsole이나ActiveMQ웹 콘솔, ActiveMQ조회(advisory) 메시지처리, 명령줄 스크립트 등 다양한 측면의 모니터링 방법을 제공
스프링(Spring) 지원
  • 스프링을 지원하기 때문에 쉽게 스프링 응용프로그램 안으로 포함될수 있으며 스프링의 XML 설정 메커니즘을 사용하여 설정도 가능
Ajax 지원
  • 순수한 DHTML을 사용하는 웹 브라우저를 지원하기 위한 웹 스트리밍을 지원하는 Ajax, 웹 브라우저가 메시징구조의 일부가 될 수 있도록 지원
CXF 와 Axis
  • CXF와 Axis 를 지원하기 때문에 신뢰성 있는 메시징을 제공하기 위한 웹서비스 스택 중 하나를 쉽게 적용
고급기능지원
  • 메시지그룹과 가상목적지, 와일드카드, 그리고 합성주소(Composite Destination) 같은 고급기능을 지원
엔터프라이즈 통합패턴 지원
  • JMS클라이언트와 메시지 브로커, 양 쪽을 엔터프라이즈 통합패턴으로 연동 지원
  • JMS로 구현한 하나 이상의 클라이언트와 서버 간의 커뮤니케이션을 증진시키는 기능을 제공

 

3. Kafka의 개념과 기능

구분
설명
개념
  • 아파치 소프트웨어 재단이 스칼라로 개발한 오픈 소스 메시지 브로커 프로젝트
  • 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것이 목표
개념도
구성요소
Broker
  • 데이터를 수신, 전달하는 서비스
Message
  • 카프카에서 다루는 데이터의 최소 단위
  • 메시지는 Key와 Value를 갖게 되며 나중에 언급할 메시지 전송할 때파티셔닝에 이용
Producer
  • 데이터의 생산자이며 브로커에 메시지를 보내는 애플리케이션
Consumer
  • 브로커에서 메시지를 취득하는 애플리케이션
Topic
  • 메시지를 종류별로 관리하는 스토리지
  • 브로커에 배치되어 관리됨
  • 프로듀서와 컨슈머는 특정 토픽을 지정하여 메시지를 송수신함으로써단일 카프카 클러스터에서 여러 종류의 메시지를 중계함
주요기능
Publisher
Subscriber 모델
  • 데이터 큐를 중간에 두고 서로 간 독립적으로 데이터를 생산하고 소비
  • 느슨한 결합을 통해 서로 간에 의존성이 없으므로 안정적으로 데이터를 처리
고가용성(High
availability) 및 확
장성(Scalability)
  • 클러스터로서 작동하므로 Fault-tolerant 한 고가용성 서비스를 제공
  • 분산 처리를 통해 빠른 데이터 처리
  • 서버를 수평적으로 늘려 안정성 및 성능을 향상시키는 Scale-out이 가능
디스크 순차 저장
및 처리
(Sequential Store
and Process in
Disk)
  • 메세지를 메모리 큐에 적재하는 기존 메세지 시스템과 다르게 카프카는 메세지를 디스크에 순차적으로 저장
분산 처리
(Distributed
Processing)
  • 파티션(Partition)이란 개념을 도입하여 여러 개의 파티션을 서버들에
  • 분산시켜 나누어 처리하므로 메세지를 상황에 맞추어 빠르게 처리 가능
  • Kafka는 대용량 실시간 로그 처리에 특화되어 설계된 메시징 시스템으로 TPS가 매우 우수

 

4. RabbitMQ, ActiveMQ, Kafka 의 장단점 비교

구분
RabbitMQ
ActiveMQ
Kafka
개념
  • AMQP를 지원하는 오
  • 픈소스 메시징 시스템
  • JAVA로 만든 오픈 소스 메시지 브로커
  • 대용량 실시간 로그 처리에 특화되어 설계된 메시지 시스템
장점
  • 실시간 모니터링 및 관리 용이
  • 다양한 언어 지원
  • 클러스터링 가능
  • 다양한 언어 지원
  • STOMP를 통해서도 접근 가능
  • JDBC를 사용하여 매우 빠른 Persistence 지원
  • 클러스터링 가능
  • REST API를 통해 웹기반 메시징 지원
  • AMQP나 JMS를 사용하지 않고 단순 메시지 헤더를 지닌 TCP 통신
  • 개별 전송이 아닌 다수 전송 가능(Batch 처리 가능)
  • 파일 시스템에 저장(데이터의 영속성 보장)
  • 대기 중인 메시지로 인한 시스템성능 감소 줄임
  • 대기 중인 메시지로 인한 시스템성능 감소 줄임
단점
  • Window OS 시, Erlang, OpenSSL 설치 필요
  • 모니터링 도구 없음
  • 컨슈머 장애가 발생했을 때 메시지가 손실되거나 메시지 중복이 발생 할 수 있음


 

공감과 댓글은 아이티신비에게 큰 힘이 됩니다.

블로그 글이 유용하다면 블로그를 구독해주세요.♥