관리 메뉴

The Nirsa Way

[Apache Kafka] 기본 개념 이해하기 (메시지 브로커, Pub/Sub, Producer/Consumer, 스트리밍) 본문

Development/Apache Kafka

[Apache Kafka] 기본 개념 이해하기 (메시지 브로커, Pub/Sub, Producer/Consumer, 스트리밍)

KoreaNirsa 2025. 7. 18. 10:31
반응형

 

Apache Kafka란?

실시간의 스트리밍 데이터를 수집하고 처리하는 분산형 스트리밍 플랫폼 입니다. 이미 많은 기업에서 도입하여 사용되고 있으며 대용량 트래픽을 처리하기 위한 해결 방안으로써 많이 주목을 받고 있습니다.

이번 포스팅에서는 Kafka를 공부하기 전 밑바탕이 되는 개념인 메시지 브로커와 Pub/Sub & 스트리밍에 대한 내용을 다룹니다.


메시지 브로커(Message Broker)

메시지 브로커는 송신자(Producer)와 수신자(Consumer)간에 메시지를 중계하며 비동기적으로 데이터를 주고받게 하는 시스템입니다. 시스템간 직접 통신을 대신하여 중간에서 메시지를 효율적으로 전달해주는 역할을 수행합니다.

메시지 브로커의 구성요소는 아래와 같으며 Topic은 Pub/Sub 패턴으로써 여러 수신자(Consumer)가 메시지를 수신할 수 있고, Queue는 Produce/Sonume 패턴으로써 하나의 메시지는 하나의 수신자(Consumer)만 처리하는 방식입니다.

즉 메시지 브로커의 통신 방식은 크게 Point-to-Point(Queue 기반의 Produce/Consume)과 Publish-Subscribe(Topic 기반)으로 나뉘어 집니다. Point-to-Point는 하나의 Consumer만 메시지를 처리하므로 주문 요청 → 주문 처리기 1명 수행 같은 작업 큐 방식에 적합하며, Publish-Subscribe는 여러 Consumer가 동시에 같은 메시지를 수신할 수 있어 사용자 이벤트 발생 → 로그 수집, 알림, 분석 시스템 등 다양한 처리에 적합합니다.

 

이러한 메시지 브로커의 주요 역할들은 아래와 같습니다.

메시지 브로커를 사용하는 시스템은 대표적으로 Apache Kafka, RabbitMQ 등이 있으며 일반적으로 실시간 알림/푸시 시스템, 로그 수집 및 분석 파이프라인, 마이크로서비스 간 이벤트 연동 등의 상황에 많이 사용됩니다.


Pub/Sub 패턴

앞으로 Kafka를 학습할 때 Pub/Sub 패턴을 사용하기에 이에 대한 개념을 알고 넘어가야 합니다.

Pub/Sub(Publish/Subscribe)은 Producer가 메시지를 Topic에 발행(Publish)하면, 이를 구독(Subscribe)한 Consumer가 메시지를 수신하는 구조입니다. 즉 아래와 같은 구조를 가지게 되며 Producer가 Topic에 메시지를 보내는 발행이 Publish이며 Consumer는 Topic을 구독(Subscribe)한 후 메시지를 수신하게 됩니다.

//             publish                subscribe
[ Producer ] ──(발행)──>  [ Topic ]  ──(구독)──>  [ Consumer ]
※ Topic : 메시지를 구분하는 논리적인 채널

 

전체적인 Pub/Sub 패턴을 나타낸 그림입니다. 사용자 이벤트가 발생하면 해당 이벤트를 user-event라는 Topic에 발행(Publish)하며 여러 시스템(로그 수집기, 알림 시스템, 통계 시스템)이 해당 Topic를 구독(Subscribe)하고 있어 이벤트가 발생될 때 마다 각자 메시지를 수신하고 독립적으로 처리할 수 있습니다.

앞으로 사용할 Kafka가 Topic 부분에 브로커로써 들어가게 됩니다.

 

이로 인해 Pub/Sub의 전체적인 그림은 아래와 같이 진행되며 주요 특징들은 5가지 정도로 생각해볼 수 있습니다.

  1. 1:N 전달 : 하나의 메시지가 여러 Subscribe에게 동시 전달
  2. 비동기 처리 : Producer는 Consumer 상태와 무관하게 메시지 발행 가능
  3. 느슨한 결합 : Publish와 Subscribe는 서로의 존재를 알 필요 없음
  4. 확장성 : Subscribe를 쉽게 추가/제거 가능
  5. 주요 구조 : Topic을 통해 메시지가 전달되며 Broker가 중계

Producer/Consumer 패턴

Queue 기반 메시징 방식으로써 Producer가 메시지를 생성하여 Queue에 넣고, Consumer가 이를 하나씩 가져와 처리하는 구조입니다. 해당 패턴은 1:1 방식으로 진행됩니다.

[ Producer ] ──(생성)──>  [ Queue ]  ──(소비)──>  [ Consumer ]
※ Queue : 메시지를 순서대로 저장하는 선입선출(FIFO) 방식의 구조

스트리밍(Streaming)

데이터를 한번에 처리하지 않고 작은 단위로 쪼개어 지속적으로 전달하고 처리하는 방식을 의미합니다. 대용량 데이터를 한번에 처리하는 것 보다는 조각 단위로 빠르게 전송하여 처리하면 그만큼 사용자에게 반응을 빠르게 할 수 있기 때문에 실시간 처리에 굉장히 유리한 포지션을 가져갈 수 있습니다.

스트리밍은 미디어 스트리밍, 데이터 스트리밍 등으로 나뉘어 지는데 미디어 스트리밍은 유튜브, 넷플릭스를 생각하시면 되고 데이터 스트리밍의 경우 앞으로 사용할 kafka에서 다루게 됩니다.

반응형