ASHD Dev_Blog

1-a. 메시지 지향 미들웨어 (MOM) [SYS-study]

메시지 지향 미들웨어 중 한 가지인 메시지큐의 이론과 MSA에서의 역할

이재룡
이재룡 Jul 2, 2025


[ 0. MOM이란? ]

미들웨어 : 서로 다른 애플리케이션이 서로 통신하는 데 사용되는 소프트웨어

 

메세지 지향 미들웨어 (MOM) : 비동기적(Asynchronous) 방식을 이용해서 프로세스간의 데이터를 주고 받는 시스템

  • 송수신 측의 동시 네트워크 연결 유지 필요성 제거 (강제 연결 X)
  • 하나의 메세지를 여러 수신자에게 배포가 가능 (라우팅)
  • 메세지의 백업 기능을 유지 (보관)
  • 송수신 측의 요구에 따라 전달하는 메세지를 변환 가능 (변환)
 

[ 1. MQ ]

QUEUE(FIFO) 자료구조를 이용해서, MOM을 구현한 시스템

메세지를 발행하고 전달하는 부분을 Producer
메세지를 받아서 소비하는 부분을 Consumer
ProducerConsumer 를 연결하는 것이 Message Queue


메시지 큐의 장점

1. 비동기(Asynchronous): Queue에 넣어두기 때문에 나중에 처리 가능

2. 낮은 결합도(Decoupling): 애플리케이션과 분리

3. 탄력성(Resilience): 실패가 전체 시스템에 영향 X

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

5. 신뢰성(Guarantees): 작업이 처리된 걸 확인 및 모니터링 가능

6. 확장성(Scalable): 부하 처리 방식이 편리

확장성 예시 1: Consumer 부족으로 부하 발생

  • 사용자가 많아져서 큐에 메시지가 계속 쌓임
  • Consumer가 하나밖에 없어서 처리 속도가 느림
    • ⇒ Consumer를 5개로 늘림 → 큐가 병렬로 빨리 비워짐

       

확장성 예시 2: API 서버가 병목이라 Producer 확장

  • 동시 요청이 많아 API 서버가 느림 (큐에 밀어넣기 전에 죽음)
    • ⇒ Producer 서버 수를 늘려 메시지 큐로 더 많은 요청을 밀어 넣음

 

[ 2. Broker ]

메세지 브로커(Message Broker)

  • Consumer 가 메세지 큐에서 데이터를 가져가게 되면 짧은 시간 내에 메세지 큐에서 삭제
    • ex) RabbitMQ, ActiveMQ, AWS SQS, Redis

 

  • 이벤트 브로커(Event Broker)
    • 데이터 = 이벤트

    • 이벤트 브로커 방식에서는 Consumer 가 소비한 데이터를 필요한 경우 다시 소비 가능
    • Callout icon'

      이벤트 시점을 저장 가능

      ⇒ consumer가 특정 시점부터 이벤트를 다시 consume 할 수 있는 장점(ex : 장애가 일어난 시점부터 그 이후의 이벤트를 다시 처리할 수 있음)

    • 대용량 데이터를 처리 가능
 
이벤트 브로커는 기본적으로 메세지 브로커의 역할 가능!
but 반대로 메세지 브로커는 이벤트 브로커의 기능 불가!
⇒ 이벤트 브로커가 더 만능
 
Callout icon'
  • 메시지 기반: A가 B에게 "메일을 보내!"라고 직접 지시함 (명령 + 전달 대상 지정)
  • 이벤트 기반: A는 "회원가입이 완료됨"이라는 사실을 말하고, 듣고 싶은 사람들(C, D, E)이 알아서 반응함
 

[ 3. Zookeeper & KAFKA ]

Kafka : 분산 이벤트 스트리밍 플랫폼 (이벤트 브로커 이용)
⇒ 여러 개의 이벤트 전송 Broker(서버)로 구성된 클러스터

 

Zookeeper : 분산 애플리케이션을 위한 코디네이션 시스템

⇒ 여러 분산 시스템의 중앙 관리 프로그램

 

KAFKA에서는

  • 브로커의 leader와 follower 구분
  • 브로커의 활성 여부 (heartbeat)
  • 파티션 분할 등

Zookeeper ⇒ 위와 같은 데이터를 어딘가에 저장하고 조율

Zookeeper = 클러스터 메타데이터 + 상태 + 역할 + 리더 선출의 중심 시스템


KAFKA의 구조

event : 데이터

event stream : 관련된 이벤트들

topic : kafka에서 event stream의 명칭

partition : topic을 분산 저장하는 가장 작은 단위 (for 병렬 전달)

 

Subscribe 동작 ⇒ (Consumer가 카프카를 확인)

  • Kafka 토픽
    • a → 2개 파티션 (a-0, a-1)
    • b → 1개 파티션 (b-0)
    • c → 1개 파티션 (c-0)
    • d→ 1개 파티션 (d-0)
  • Consumer는 a, b, d 토픽을 구독
 

Green Frog DeveloperGreen Frog Developer[기술 면접 준비 - 2일차] Spring Framework && Database
FRIPFRIPPUB/SUB, 잘 알고 쓰자!

[Kafka] Kafka 의 Topic 과 Partition
이 포스팅의 주요 목적은 카프카에서 핵심적인 역할을 하는 파티션에 대해 공부하는 것이다. 파티션에 대해 이해를 해야 카프카의 구조나 동작에 대해 빠르게 이해할 수 있고, 올바르게 사용할 수 있다. Events, Streams, and Topics 파티션에 대해 공부하기 전에, 카프카에서 사용되는 몇 가지 개념과 그것들이 파티션과 어떻게 연관이 있는지를 알아보자. Events 이벤트란, 과거에 일어난 사실을 뜻한다. 이벤트는 발생함으로 인해 변화된 상태를 가지고 시스템 사이를 오가는, 불변하는 데이터이다. Streams 이벤트 스트림이란, 관련된 이벤트들을 뜻한다. Topics 이벤트 스트림이 카프카에서는 토픽이란 이름으로 저장된다. 카프카의 세계에서는 토픽이 구체화된 이벤트 스트림을 뜻한다. 토픽은 연관..
icon

https://ggop-n.tistory.com/89

TISTORYTISTORY[Apache Kafka]구성요소 이해하기(Cluster, Broker, Topic, Partition, Producer, Consumer, Zookeeper)

 

추천 글

BlogPro logo