본문 바로가기
OS & Network

MQ (Message Queue) 란

by 새발개발JA 2021. 9. 16.
반응형

 

 

현재 제작하는 서비스는 기존 데이터베이스와 연동가능한 서비스이기 때문에 프로세스 자체가 복잡하고 시간이 걸린다.

그렇기 때문에 MQ를 도입하여 서비스에서 파생되는 부가 요청 등을 MQ에 보낸 후 응답시키는 프로세스로 넘어가도록 하고,

처리는 MQ에서 꺼내 별도로 진행하도록 하였다. 그 결과 서비스 시에 여러 프로세스로 넘어가는 시간이 획기적으로 단축된다.

 

MQ 는 데일리미팅에서 백엔드 개발자분에게 많이 들었던 단어이다. MQ가 뭐지 받아적다 보니 막연한 개념만 알겠더라.

오늘도 새발자는 뚠뚠. 자, 공부해보자. 

 


MQ (Message Queue) 란

메시지 기반의 미들웨어이다. 메시지를 이용하여 중간에서 여러 어플리케이션, 시스템, 서비스들을 연결해주는 솔루션이다.

비동기 메시지를 사용하는 서비스들 사이에서 데이터를 교환해주는 역할을 한다.

Producer(sender) 가 메시지를 큐에 전송하면 → Consumer(receiver) 가 처리하는 방식으로,

producer 와 consumer 에 message 프로세스가 추가되는 것이 특징이다.

Message Queueing은 대용량 데이터를 처리하기 위한 배치 작업이나, 채팅 서비스, 비동기 데이터를 처리할 때 사용한다.

 

 

  • 어플리케이션과 데이터베이스의 동기적 직접통신 구조

1. DB의 응답 시간이 길어진다면 어플리케이션 또한 그만큼 응답시간이 길어진다.
2. DB 장애시 어플리케이션이 동작하지 못한다.
3. 어플리케이션 입장에서 감당할 수있는 요청 수가 DB에서는 감당 불가능하다면,
성능저하나 장애가 발생할 수 있다. 

 

 

  • MQ를 통한 어플리케이션과 데이터베이스의 통신

1. 어플리케이션은 큐에 요청을 보내고, DB의 응답을 기다리지 않고 응답을 보낼 수 있다.
2. DB 장애 발생시에도 어플리케이션은 독립적으로 동작이 가능하다.
3. 어플리케이션과 DB 사이의 통신을 처리량에 따라 제어할 수 있다.

 

 

 

MOM(Message Oriented Middleware): 메세지 지향 미들웨어

- 분산 시스템 간 메시지를 주고 받는 기능을 지원하는 소프트웨어나 하드웨어 인프라

 


Broker: 브로커

- 송신자(sender)와 수신자(receiver) 사이에서 메세지의 전달을 중재하는 컴퓨터 프로그램 모듈
소프트웨어 예시.

- RabbitMQ,  AWS SQS, Apache ActiveMQ , Apache Kafka, IBM MQ

 

AMQP 와 JMS

AMQP(Advanced Message Queuing Protocol)
- 이기종 플램폼간의 상호 메세지 교환 가능하며, 특히 클라우드 컴퓨팅 환경에 매우 적합하다.

- 금융계의 이기종 플랫폼간 메시지 상호 정보 교환을 위해서 JPMorgan의 John O'Hara에 의해 2006년에 개발되었다.

- AMQP working group에 의해 개발된 오픈 스펙으로는 RabbitMQ, StormMQ, Apache Qpid와 같은 오픈 소스 구현 브로커가 있습니다.

 

 

JMS(Java Messaging System)
- 자바 플랫폼간의 상호 메세지 교환 가능. 이기종 플랫폼간은 제한적.

 

 

 

 

 

 

 

ref 블로그 : https://lion-king.tistory.com/entry/MessageQueue-MQ-what-is

 

 

반응형

댓글