반응형
메시지 큐(Message Queue)
메시지 큐는 애플리케이션 간의 비동기 데이터 통신을 지원하는 시스템으로, 데이터를 큐에 저장하고 처리할 수 있도록 도와준다.
특히, 대규모 분산 시스템에서 안정적이고 유연한 통신을 구현할 때 유용하다.
즉, 메시지 큐는 분산된 환경에서 프로세스나 프로그램의 시스템 간 데이터를 교환하기 위해 사용되는 통신 기법이다.
📌 주요 특징
- 비동기적 통신: 발신자와 수신자가 독립적으로 작업을 수행할 수 있도록 지원한다.
- 중간 저장소 역할: 데이터를 큐(queue)에 임시로 저장하고, 소비자가 이를 처리한다.
- 분산 시스템 필수 구성 요소: 작업 부하 분산, 내결함성, 확장성 제공.
주요 구성 요소 🔧
- 메시지(Message): 큐에 저장되는 데이터 단위. JSON, XML, 텍스트 등 다양한 형식으로 표현된다.
- 프로듀서(Producer): 메시지를 생성하여 큐에 추가하는 주체.
- 큐(Queue): 메시지를 저장하는 데이터 구조. FIFO 방식이 일반적이다.
- 컨슈머(Consumer): 큐에서 메시지를 가져와 작업을 처리하는 주체.
- 브로커(Broker): 메시지의 송수신, 라우팅, 보관을 관리하는 시스템.
동작 원리 🚀
- 프로듀서가 메시지를 생성하고 큐에 저장한다.
- 큐는 메시지를 FIFO(선입선출) 방식으로 관리한다.
- 컨슈머가 큐에서 메시지를 가져와 작업을 처리한다.
메시지 큐의 장점 🌟
- 비동기 처리: 작업을 독립적으로 처리해 시스템 성능 최적화.
- 확장성: 컨슈머를 추가해 부하를 분산 가능.
- 내결함성: (컨슈머) 실패한 메시지를 안전하게 보관하거나 재처리 가능.
- 유연성: 발신자와 수신자 간 결합도를 낮춰 서비스 간 독립성 확보.
메시지 큐의 단점 ⚠️
- 지연: 메시지가 큐에 대기하는 동안 지연 발생 가능.
- 복잡성: 추가 구성 요소로 인해 시스템 관리가 복잡해질 수 있다.
- 장애 가능성: 브로커 장애 시 시스템 전체에 영향을 줄 수 있음 (고가용성 설정 필요).
사용 사례💡
- 백그라운드 작업: 이미지 처리, 이메일 발송 등.
- 마이크로서비스 통신: 서비스 간 이벤트 전달 및 데이터 동기화.
- 데이터 스트리밍: 실시간 로그 수집 및 분석.
- 작업 분배: 여러 워커(Worker) 간 부하 분산.
주요 메시지 큐 구현체 목록
구현체 | 특징 |
---|---|
RabbitMQ | AMQP 기반, 간단한 설정과 안정적 메시징 기능. |
Kafka | 대용량 데이터 스트리밍 및 분산 처리에 적합. |
SQS | AWS의 관리형 서비스로 간단한 설정 제공. |
Redis | 인메모리 기반 실시간 메시징(Pub/Sub). |
ActiveMQ | Java 기반, JMS 표준 지원. |
반응형
'Computer Science (CS)' 카테고리의 다른 글
[CS] AMQP 와 RabbitMQ 분석하기 (2) | 2025.01.04 |
---|