Message Brokers
메시지 브로커(Message Brokers)는 분산 시스템이나 컴포넌트 간의 통신을 중개하는 역할을 한다. 즉 메시지를 수신하고, 라우팅하며, 전달하는 과정을 통해 통신을 가능하게 한다.
이들은 비동기 메시지 전달을 지원하여 생산자(보내는 측)와 소비자(받는 측)를 분리(디커플링)시킴으로써 시스템의 확장성과 유연성을 향상시킨다.
메시지 브로커의 일반적인 기능에는 다음이 포함된다.
- 메시지 큐잉(message queuing)
- 부하 분산(load balancing)
- 영속성과 승인 같은 기능을 통한 신뢰성 있는 메시지 전달 보장
대표적인 메시지 브로커로는 Apache Kafka, RabbitMQ, ActiveMQ 등이 있으며, 각각 실시간 데이터 처리, 이벤트 스트리밍, 작업 관리 등 다양한 사용 사례에 맞게 특화된 기능과 역량을 제공한다.
📝 정리: 메시지 브로커는 분산 시스템에서 생산자와 소비자 사이의 메시지를 비동기적으로 중개하여 확장성과 신뢰성을 높여주는 시스템이다.
RabbitMQ 펼치기
RabbitMQ는 오픈 소스 메시지 브로커로, AMQP(Advanced Message Queuing Protocol)를 사용하여 분산 시스템 간의 메시지 교환을 가능하게 한다.
이것은 메시지를 큐잉(queuing)하고 라우팅(routing)하여 생산자(Producer)와 소비자(Consumer) 사이에서 비동기 통신을 지원하며, 애플리케이션 컴포넌트를 분리(디커플링)시켜 확장성과 신뢰성을 향상시킨다.
RabbitMQ는 다음과 같은 기능을 제공한다.
- 메시지 내구성(Message durability)
- 승인(Acknowledgment)
- 익스체인지(Exchange)와 큐(Queue)를 통한 유연한 라우팅
또한 높은 수준의 설정 가능성을 제공하여 다음과 같은 다양한 메시징 패턴을 지원한다.
- 발행/구독(Publish/Subscribe)
- 요청/응답(Request/Reply)
- 지점 간(Point-to-Point) 통신
RabbitMQ는 엔터프라이즈 환경에서 대량 메시지 처리(high-throughput messaging)와 이기종 시스템 간 통합을 위해 널리 사용된다.
📝 정리: RabbitMQ는 AMQP 기반의 오픈 소스 메시지 브로커로, 큐와 익스체인지를 통해 다양한 메시징 패턴을 지원하며 엔터프라이즈 환경에서 안정적인 메시지 전달을 제공한다.
- AMQP (Advanced Message Queuing Protocol): 메시지 브로커(예: RabbitMQ)에서 사용되는 표준 프로토콜로, 메시지를 안전하고 신뢰성 있게 전송하기 위한 규칙과 형식을 정의한다.
- 큐잉 (Queuing): 메시지를 큐(Queue)에 쌓아두고, 소비자가 준비되었을 때 순서대로 전달하는 방식으로 비동기 처리를 가능하게 한다.
- 라우팅 (Routing): 메시지를 특정 조건(토픽, 규칙 등)에 따라 적절한 큐나 소비자에게 전달하는 과정이다.
- 비동기 통신 (Asynchronous Communication): 송신자와 수신자가 동시에 연결되어 있을 필요 없이, 메시지를 중간에 저장했다가 나중에 전달하는 통신 방식이다.
- 분리(디커플링, Decoupling): 생산자와 소비자가 서로 직접 알 필요 없이 메시지 브로커를 통해 간접적으로 통신하게 하여, 시스템 의존성을 줄이고 유연성을 높이는 개념이다.
- 이기종 시스템 (Heterogeneous Systems): 서로 다른 기술 스택(언어, 플랫폼, 프레임워크 등)을 사용하는 시스템들을 의미하며, 메시지 브로커는 이기종 시스템 간의 통합을 쉽게 해준다.
Kafka 펼치기
Apache Kafka는 대규모 처리량(high-throughput)과 내결함성(fault-tolerant)을 갖춘 분산 이벤트 스트리밍 플랫폼이다. Kafka는 메시지 브로커처럼 동작하여 시스템이 레코드 스트림을 발행(publish)하고 구독(subscribe)할 수 있게 해주며, 이는 분산 커밋 로그(distributed commit log)와 유사하다.
Kafka는 높은 확장성(scalability)을 제공하고, 낮은 지연(latency)으로 대량 데이터를 처리할 수 있어 실시간 분석, 로그 수집, 데이터 통합 등에 이상적이다.
주요 특징으로는
- 토픽(Topic): 데이터 스트림을 조직화
- 파티션(Partition): 병렬 처리 지원
- 복제(Replication): 내결함성 보장
이로써 분산 시스템 전반에서 대규모 데이터 흐름을 신뢰성 있고 효율적으로 처리할 수 있다.
📝 정리: Kafka는 대규모 데이터를 낮은 지연으로 처리하는 분산 이벤트 스트리밍 플랫폼으로, 토픽·파티션·복제를 통해 실시간 분석과 데이터 통합에 최적화된 메시지 브로커이다.
- 레코드 스트림 (Record Stream): 시간 순서대로 발생하는 데이터를 지속적으로 전달·처리하는 데이터 흐름이다.
- 분산 커밋 로그 (Distributed Commit Log): 분산 환경에서 모든 이벤트를 순서대로 기록하고, 여러 소비자가 동일한 기록을 읽을 수 있도록 보장하는 로그 저장 방식이다.