본문 바로가기
백엔드/서버 개발 필요 지식

[서버 개발 지식] Message Queue

by 손정빈 2019. 9. 23.
728x90
반응형

RabbitMQ와 Kafka 공부 전에 Message Queue에 대해서 선행 공부를 하고자 작성합니다.

 

메세지 지향 미들웨어(Message Oriented MiddleWare: MOM)은 비동기 메세지를 사용하는 다른 응용프로그램들 사이에서의 데이터 송수신을 의미합니다. MOM을 구현하는 시스템을 Message Queue라고 하며, 메세지 큐는 별도의 공정 작업을 연기할 수 있는 유연성을 제공하여 SOA(Service-Oriendted Architecture:서비스 지향 아키텍처)의 개발에 도움을 줄 수 있습니다.

 

프로그래밍에서 Message Queue는 프로세스나 프로그램 인스턴스가 데이터를 서로 교환할때 사용하는 방법으로, 데이터를 교환할 때  시스템이 관리하는 메세지를 이용하는 것이 특징입니다. 이렇게 서로 다른 프로세스나 프로그램 사이에 메세지를 교환 할 때 AMQP(Advanced Message Queuing Protocol)을 이용합니다. AMQP는 메세지 지향 미들웨어를 위한 Open Standard Application Layer Protocal입니다. AMQP를 이용하면 다른 벤더 사이에 메세지를 전공하는 것이 가능한데, JMS(Java Message Service)가 API를 제공하는 것과 달리 AMQP는 Wire-Protocol을 제공하는데 이는 Octet Stream을 이용해서 다른 네트워크 사이에 데이터를 전송 할 수 있는 프로맷으로 사용하게 됩니다.

 

메세지 큐의 장점

- 비동기(Asynchronous) : Queue에 넣어서 받기 때문에 나중에 처리 할 수 있다.

- 비동조(Decoupling) : 애플리케이션과 분리 할 수 있다.

- 탄력성(Resilience) : 일부가 실패하더라도 전체에는 영향이 없다.

- 과잉(Redundancy) : 실패할 경우 재실행이 가능하다.

- 보증(Cuarantees) : 작업이 처리된 걸 확인 할 수 있다.

- 확장성(Scalable) : 다수의 프로세스들이 큐에 메세지를 보낼 수 있다.

 

Message Queuing은 대용량 데이터를 처리하기 위한 배치 작업이나, 채팅 서비스, 비동기 테이터를 처리할 때 사용합니다. 프로세스 단위로 처리하는 웹 요청이나 일반적인 프로그램을 만들어서 사용하는데 사용자가 많아지거나 데이터가 많아지면 요청에 대한 응답을 기다리는 수가 증가하다가 나중에는 대기 시간이 지연되어서 서비스가 정상적으로 되지 못하는 상황이 오기 때문에 기존에 분산되어 있는 데이터 처리를 한 곳에 집중하면서 메세지 브로커(Message Queue)를 두어서 필요한 프로그램에 작업을 분산시키는 방법을 하는 것이 목적입니다.

 

JMS vs AMQP

- AMQP는 ISO 응용 계층의 MOM의 표준입니다.

- JMS는 MOM을 자바에서 지원하는 표준 API입니다. (JMS와 AMQP는 다른 개념입니다.)

 


반응형

댓글