ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Message Queue 란❓
    ✉️ MQ 2023. 1. 4. 00:04

    Message Queue ❓


    💡 Message Queue란 프로세스 간에 데이터를 교환할 때 사용되는 통신 방법 중 하나이다.

    더 큰 개념으로는  - MOM(Message Oriented Middleware : 메시지 지향 미들웨어)를 의미한다.

     

    최신 클라우드 아키텍처에서는 애플리케이션이 좀 더 쉽게 개발, 배포 및 유지 관리할 수 있도록 더 작고 독립적인 모듈로 구성한다.

     

    MQ는 이런 분산 애플리케이션을 위한 통신 및 조정 기능을 제공

    • 각 모듈 애플리케이션의 코딩을 간소화
    • 동시에 성능, 안정성 및 확장성을 개선

     

    MQ를 사용하면 시스템의 서로 다른 부분이 통신하고 비동기식으로 작업을 처리할 수 있다.

     

    MQ는 메시지를 임시로 저장하는 간단한 버퍼를 제공

    • 메시지를 전송 및 수신하기 위해 소프트웨어 구성 요소가 queue에 연결하도록 허용하는 엔드포인트를 제공

     

    용어 정리


    📖 MOM

    메시지 지향 미들웨어

    • 분산 시스템 간의 메시지를 주고받는 기능을 지원하는 소프트웨어 또는 하드웨어 인프라
    • 비동기 메시지를 사용하는 프로그램 간 데이터 송수신
    • MOM을 구현한 서비스를 MQ 라고 한다.

     

    📖  미들웨어 (Middle ware)

    • 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어 (중간에서 매개 역할)
    • 네트워크를 통해서 연결된 여러 개의 컴퓨터에 있는 많은 프로세스들에게 어떤 서비스를 사용할 수 있도록 연결해주는 소프트웨어
    • 더욱 빠르게 혁신할 수 있도록 애플리케이션을 지능적이고 효율적으로 연결하는 기능을 제공

    3계층 클라이언트 / 서버 구조에서 미들웨어가 존재한다.

     

    중요한 이유

    • 새 애플리케이션과 레거시 시스템 사이를 잇는다.
    • 분산 시스템의 중요한 통신 및 데이터 관리 도구가 되었다.
      • 미들웨어가 없다면 개발자는 애플리케이션에 연결된 각 소프트웨어 구성 요소의 데이터 교환 모듈을 구축해야 한다. - 매우 어려움

     

    📖 Message Broker

    • 송신자로부터 전달받은 메시지를 수신자로 전달해주는 중간 역할 ⇒ 전달자 역할

     

    📖 Message Queue

    • Message 브로커안의 메시지가 적재되는 공간 ⇒ 실질적인 처리 형태

     

    📖 생산자 (Producer)

    • 생산자는 메시지를 대기열에 추가한다.(메시지 전달)
    • 소비자에게 직접 요청을 하는 것이 아님.

     

    📖  소비자 (Consumer)

    • MQ를 구독(Subscribe)한다.
    • queue에 있는 메시지를 검색하고 이를 사용
    • 메시지는 소비자가 사용해 작업을 수행할 때까지 queue에 저장된다.

     

    📖 AMQP (Advanced Message Queuing Protocol)

    • MQ를 오픈소스에 기반한 표준 프로토콜
    • AMQP는 프로토콜만 일치한다면 다른 AMQP를 사용한 application과도 통신이 가능하다.

    메시지 전달을 3가지 방식중 하나를 보장

    1. At-Most-Once : 각 메시지는 한 번만 전달되거나 전달되지 않는다.
    2. At-Least-Once : 각 메시지는 최소 한 번 이상 전달됨을 보장
    3. Exactly-Once : 각 메시지는 딱 한 번만 전달된다.

     

    📌 Message Queue 장점


     

    1. 비동기 (Asynchronous)
      • 생산된 메시지의 저장, 전송에 대해 동기화 처리를 진행하지 ❌
      • 큐에 넣어두기 때문에 나중에 처리할 수 있다.
    2. 낮은 결합도 (비동조, Decoupling)
      • 생산자 서비스와 소비자 서비스가 독립적으로 행동
      • 서비스간 결합도가 낮아짐
    3. 확장성 (Scalable)
      • 생산자, 소비자를 원하는 대로 확장할 수 있다.
    4. 탄력성 (Resilience)
      • 소비자 서비스가 죽어도 애플리케이션은 중단되지 않음
      • 메시지는 메시지 큐에 그대로 남아있다.
    5. 보장성 (Guarantees)
      • 큐에 보관되는 모든 메시지가 결국 소비자에게 전달된다는 일반적인 보장을 제공

     

    📌 Message Queue 종류


    ActiveMQ (JMS)

    MOM을 자바에서 지원하는 표준 API

    • 다른 자바 애플리케이션들끼리 통신 가능
    • 다른 MOM끼리의 통신은 불가능 (ex. AMQP, SMTP)

     

    RabbitMQ ⭐

    💡 AMQP(Advanced Message Queuing Protocol)를 구현한 오픈소스 메시지 브로커

     

    Apache Kafka ⭐

    LikedIn이 개발

    오픈 소스 스트림 프로세싱 소프트웨어 플랫폼

    • 높은 처리량을 요구하는 실시간 데이터 피드 처리나 대기 시간이 짧은 플랫폼을 제공하는 것을 목표로 한다.
    • TCP 기반 프로토콜을 사용한다
    • 클러스터를 중심으로 Producer와 Consumer가 데이터를 Push하고 Pull 하는 구조를 가진다.

    특징

    • 내구성이 뛰어난 메시지 저장소
      • 메시지가 한번 배달되면 큐에서 제거되는 다른 메시지 중개업자들과 달리
      • 필요에 따라 이벤트 스트림을 재생할 수 있다.
    • 대용량 실시간 로그처리에 특화되어 있다.
    • 기존 메시징 시스템에 비해 분산 및 복제 구성을 쉽게 할 수 있다.
    • AMQP 프로토콜, JMS API를 사용하지 않고 TCP 기반 프로토콜을 사용
      • 프로토콜에 의한 오버헤드를 감소시켰다.
    • 다수의 메시지를 Batch 형태로 Broker에게 전달
    • 메시지를 메모리에 저장하는 기본 메시징 시스템과 달리 파일 시스템에 저장
      • 별도 설정을 하지 않아도 데이터의 영속성 보장
      • 파일 시스템에 저장하기 때문에 메시지를 많이 쌓아두어도 성능이 크게 감소하지 않는다.
      • 많은 메시지 → 실시간 처리 뿐아니라 주기적인 Batch 작업에 사용할 데이터를 쌓아두는 용도로도 사용할 수 있다.
    • Consumer가 Broker로부터 직접 메시지를 가지고 가는 Pull(polling) 방식으로 동작
      • 기존 메시징 시스템 - Broker가 Consumer에게 메시지를 push

     

    참고자료

    https://velog.io/@kimjaejung96/메세지-큐Message-Queue란-무엇인가

    https://goyunji.tistory.com/125

    https://aws.amazon.com/ko/what-is/middleware/

    https://velog.io/@sweet_sumin/Message-Queue

    '✉️ MQ' 카테고리의 다른 글

    [RabbitMQ] 한 Queue에서 여러 타입의 Message 처리  (0) 2023.01.05
    RabbitMQ + Spring Boot(2)  (0) 2023.01.05
    Rabbit MQ + Spring Boot(1)  (1) 2023.01.04
    Rabbit MQ  (0) 2023.01.04

    댓글

Designed by Tistory.