메시지 지향 미들웨어(MOM)란?
메시지 지향 미들웨어는 애플리케이션 간 비동기 메시지 전달을 위한 인프라입니다. 느슨한 결합, 부하 분산, 서비스 간 통신 신뢰성을 제공합니다.
메시지 큐 vs 이벤트 스트리밍
- 메시지 큐(Message Queue): 소비 후 메시지 삭제. Point-to-Point 또는 Pub/Sub. RabbitMQ, Amazon SQS
- 이벤트 스트리밍: 메시지를 보존하며 재처리 가능. 로그 기반. Apache Kafka
Apache Kafka
분산 이벤트 스트리밍 플랫폼. LinkedIn이 개발, Apache 오픈소스로 공개됩니다.
Kafka 핵심 개념
- 토픽(Topic): 메시지를 분류하는 채널. 파티션으로 분할
- 파티션(Partition): 토픽의 순서 있는 불변 메시지 시퀀스. 병렬 처리 단위
- 오프셋(Offset): 파티션 내 메시지 위치. 컨슈머가 관리
- 프로듀서(Producer): 메시지를 토픽에 발행
- 컨슈머(Consumer): 토픽에서 메시지 소비
- 컨슈머 그룹(Consumer Group): 같은 그룹 내 컨슈머는 파티션을 분담하여 처리 (로드 밸런싱)
- 브로커(Broker): Kafka 서버. 여러 브로커가 클러스터 구성
- ZooKeeper/KRaft: 클러스터 메타데이터·리더 선출 관리
Kafka 특징
- 높은 처리량: 초당 수백만 메시지
- 메시지 보존: 설정된 기간 동안 디스크에 보관 (재처리 가능)
- 순서 보장: 파티션 내에서만 순서 보장
- 내구성: 복제 계수(Replication Factor)로 브로커 장애 대응
RabbitMQ
AMQP(Advanced Message Queuing Protocol) 기반의 메시지 브로커입니다.
RabbitMQ 구성 요소
- Exchange: 메시지 라우팅 규칙 적용. 큐로 메시지 전달
- Queue: 메시지 저장 공간
- Binding: Exchange와 Queue의 연결 규칙
Exchange 유형
- Direct: 라우팅 키가 정확히 일치하는 큐로 전달
- Topic: 와일드카드 패턴으로 라우팅 (* = 단어 하나, # = 여러 단어)
- Fanout: 연결된 모든 큐에 전달 (브로드캐스트)
- Headers: 헤더 속성으로 라우팅
메시지 전달 보장 수준
- At Most Once: 최대 한 번 전달 (손실 가능)
- At Least Once: 최소 한 번 전달 (중복 가능). Kafka 기본
- Exactly Once: 정확히 한 번 전달. 가장 어려움. Kafka 트랜잭션으로 구현
시험 핵심 포인트
- Kafka: 이벤트 스트리밍, 메시지 보존, 재처리 가능
- RabbitMQ: 메시지 큐, AMQP, Exchange 유형(Direct/Topic/Fanout)
- Kafka 파티션: 병렬 처리 단위, 파티션 내 순서 보장
- 컨슈머 그룹: 파티션을 분담 처리 (로드 밸런싱)
- At Least Once vs Exactly Once: 중복 vs 정확히 한 번
마무리
메시지 미들웨어는 마이크로서비스 아키텍처의 핵심 통신 방법입니다. Kafka와 RabbitMQ의 차이(스트리밍 vs 큐)와 각 구성 요소의 역할을 이해하면 관련 문제를 쉽게 풀 수 있습니다.