1.시스템&인프라/Apache Kafka

1. 실시간 데이터 처리 플랫폼 Apache Kafka 이해하기

쿼드큐브 2025. 3. 28. 10:57
728x90

Apache Kafka는 대용량 실시간 데이터를 빠르고 안정적으로 처리하는 오픈소스 플랫폼입니다. 이 글에서는 Kafka의 기본 개념부터 핵심 구성요소, KRaft 모드, 주요 사용 사례를 중심으로 설명합니다.

 

 실시간 데이터 처리 플랫폼 Apache Kafka 이해하기

 

목차

1. Apache Kafka란?

2. Kafka의 주요 특징

3. Kafka의 핵심 구성 요소

4. Kafka 클러스터 구조 및 메타데이터 관리

5. Kafka의 주요 활용 사례

관련 글 링크

 

 

1. Apache Kafka란?

Kafka는 대량의 데이터를 실시간으로 수집하고, 저장하고, 전달하는 ‘데이터 중계 시스템’입니다.

예를 들어, 수천 명의 사용자가 웹사이트에서 활동할 때 발생하는 클릭 로그를 Kafka가 실시간으로 받아서 분석 시스템으로 보내주는 식입니다.

Kafka는 단순한 메시지 큐를 넘어, 데이터를 ‘이벤트 스트림’처럼 다루며 빠르고 안정적으로 처리합니다.
최근에는 Zookeeper 없이도 운영 가능한 KRaft 모드를 통해 설정이 간단해지고 안정성도 강화되었습니다.

출처: https://learn.conduktor.io/kafka/what -is-apache-kafka/#Apache-Kafka-to-the-rescue-1

 

 

2. Kafka의 주요 특징

◆ 고성능 & 수평 확장성

  • Kafka는 수평 확장(Scale-out) 구조를 가지고 있어, Broker를 추가하면 자동으로 성능이 향상됩니다.
  • Partition을 활용하여 데이터를 분산 저장하고, 병렬로 처리할 수 있습니다.

◆ 내결함성 (Fault Tolerance)

  • 데이터는 여러 Broker에 복제되어 저장됩니다.
  • 하나의 Broker가 장애를 일으켜도, 다른 Broker가 역할을 대체하여 데이터 손실 없이 운영됩니다.

◆ 실시간 스트리밍 처리

  • Kafka는 배치 처리(Batch Processing)뿐만 아니라 스트리밍 처리(Streaming Processing)도 지원합니다.
  • 실시간 로그 수집, 모니터링 시스템, 실시간 분석 등에 활용됩니다.

◆ 메시지 내구성

  • Kafka는 데이터를 로그 형태로 저장하며, 지정된 보존 기간 동안 데이터를 유지합니다.
  • 이로 인해 메시지 재처리와 장애 복구가 가능합니다.

 

3. Kafka의 핵심 구성 요소

Kafka 핵심 구성 요소

◆ Producer (생산자)

  • Producer는 Kafka로 데이터를 전송하는 주체입니다.
  • 예를 들어, 웹 애플리케이션이 사용자 클릭 정보를 Kafka로 보내는 경우, 이 웹 앱이 바로 Producer입니다.
  • Producer는 전송할 데이터를 Topic에 기록하며, 데이터에 Key를 지정하면 Kafka는 이를 기반으로 적절한 Partition에 메시지를 자동으로 라우팅합니다.
키 값이 같으면 동일한 Partition으로 보내지므로, 메시지 순서를 유지할 수 있습니다.

 

 Topic (토픽)

  • Topic은 Kafka에서 데이터를 분류해 저장하는 논리적인 채널입니다.
  • 하나의 Topic은 특정 주제의 데이터를 모아두는 공간이라고 생각하면 됩니다.
  • 예를 들어, user-logs라는 Topic에는 사용자 로그 데이터만 저장할 수 있으며, 다른 시스템이 이 Topic을 구독해서 데이터를 가져갑니다.
  • Topic은 내부적으로 여러 개의 Partition으로 나뉘어 있으며, 이는 분산 저장과 병렬 처리에 기여합니다. 또한 보존 기간 설정을 통해 데이터를 일정 시간 이상 저장하거나 자동 삭제되도록 할 수 있습니다.

 Partition (파티션)

  • Partition은 Topic 내부의 물리적인 데이터 저장 단위입니다.
  • Kafka는 데이터를 여러 Partition에 나눠 저장함으로써, 동시에 여러 작업을 병렬로 처리할 수 있도록 합니다.
  • 예를 들어, user-logs Topic이 3개의 Partition으로 구성되어 있다면, Kafka는 메시지를 자동으로 세 개의 Partition에 나누어 저장합니다.

주요 특징:

  • Partition 수를 늘리면 성능과 확장성이 함께 향상됩니다.
  • 각 메시지는 Producer에 의해 특정 Partition으로 전송됩니다.
  • Partition마다 메시지 순서가 보장됩니다.

 Consumer (소비자)

  • Consumer는 Kafka에서 데이터를 읽어 가는 역할을 합니다.
  • 예를 들어, 로그 분석 시스템이 Kafka에서 user-logs Topic의 데이터를 가져와 분석하는 경우, 이 시스템이 Consumer입니다.
  • Consumer는 하나 이상의 Topic을 구독할 수 있으며, 메시지를 읽은 후 Offset이라는 위치 정보를 관리합니다.
  • 이를 통해 중복 소비 없이 이어서 읽을 수 있습니다.
  • 또한, 여러 Consumer가 Consumer Group을 형성해 Topic의 데이터를 병렬로 나눠서 처리할 수 있습니다.

 Consumer Group (소비자 그룹)

  • Consumer Group은 여러 Consumer가 협력하여 하나의 Topic을 병렬 처리할 수 있게 해주는 개념입니다.
  • 예를 들어 user-logs Topic이 3개의 Partition으로 구성되어 있고, log-analyzer-group이라는 이름의 Consumer Group에 3개의 Consumer가 속해 있다면, 각 Consumer가 하나의 Partition을 담당하여 데이터를 나눠서 처리하게 됩니다.
주의: 하나의 Partition은 동시에 하나의 Consumer에게만 할당됩니다.
Consumer 수가 Partition 수보다 많으면 일부 Consumer는 대기 상태가 됩니다.

 

  Broker (브로커)

  • Broker는 Kafka 클러스터를 구성하는 핵심 서버입니다.
  • Kafka의 실제 데이터 저장, 전송, 관리를 담당하며, 여러 개의 Broker가 함께 클러스터를 구성해 대량의 데이터를 안정적으로 처리할 수 있도록 합니다.
  • 예를 들어 3개의 Broker가 있는 Kafka 클러스터에서는 여러 Topic과 Partition이 자동으로 분산되어 저장됩니다.
  • Kafka는 데이터를 복제하여 여러 Broker에 저장하므로, 한 Broker에 장애가 발생해도 다른 Broker를 통해 데이터를 복구할 수 있습니다.

 

4. Kafka 클러스터 구조 및 메타데이터 관리

Kafka 클러스터는 Apache Kafka의 분산 시스템 아키텍처를 의미합니다.

Kafka는 다수의 브로커(Broker)로 구성되며, 메시지의 저장과 처리를 분산하여 확장성과 내결함성을 제공합니다.

클러스터 내에서 메타데이터 관리 방식에 따라 ZooKeeper 기반 또는 KRaft(Kafka Raft) 기반으로 운영될 수 있습니다

ZooKeeper 기반 (기존 방식)

  • Kafka 3.x까지는 ZooKeeper를 외부 도구로 사용했습니다.
  • 주요 역할:
    • 브로커 상태 확인과 장애 감지
    • 파티션의 리더 정하기
    • 접근 제어 및 설정 정보 저장
  • 단점: 별도로 ZooKeeper를 설치하고 관리해야 해서 복잡합니다.

KRaft (Kafka Raft Controller) - Zookeeper 없이 운영 가능!

  • Kafka 3.3부터 실제 운영 환경에서도 사용할 수 있게 되었고, Kafka 4.0부터는 ZooKeeper 없이 KRaft만 사용합니다.
  • Kafka 내부에서 Raft라는 알고리즘을 이용해 메타데이터를 직접 관리합니다.
  • 장점:
    • 별도 설치 필요 없음
    • 설정이 간단해짐
    • 장애 발생 시 빠르게 복구 가능

Kafka Cluster 동작방식

  • 프로듀서(Producer)가 데이터를 전송하면, Kafka 브로커가 이를 특정 토픽의 파티션에 저장합니다.
  • 각 파티션은 하나의 "리더(Leader)"와 여러 개의 "팔로워(Follower)"로 구성됩니다.
  • Producer는 항상 Leader Partition에 데이터를 전송합니다.
  • Follower Partition은 Leader Partition을 복제하여 데이터의 고가용성(HA)을 보장합니다.
  • Consumer는 데이터를 가져올 때, Leader Partition에서 데이터를 읽습니다.
  • 컨트롤러(Controller)는 장애 발생 시 새로운 리더를 선출하여 안정적으로 운영됩니다.

출처: https://www.scaler.com/topics/kafka -tutorial/kafka-partitioning-strategy/

 

 

5. Kafka의 주요 활용 사례

  로그 및 이벤트 수집

  • 서버 로그, 애플리케이션 로그, 사용자 이벤트 등을 실시간으로 수집하고 저장할 수 있습니다.
  • 예: 웹사이트의 사용자 클릭 로그를 Kafka로 수집하고, 분석 시스템에 전달.

  실시간 데이터 스트리밍

  • 데이터 파이프라인을 구축하여 실시간으로 데이터를 전송할 수 있습니다.
  • 예: 금융 거래 시스템에서 실시간 주식 거래 데이터를 전송.

  메시지 큐(Message Queue)

  • 마이크로서비스 간 메시지를 전달하는 용도로 사용 가능합니다.
  • 예: 주문 시스템이 Kafka를 사용하여 결제 시스템과 실시간으로 데이터 교환.

  모니터링 및 실시간 분석

  • Kafka를 이용해 서버 상태 모니터링, 에러 로그 분석 등을 실시간으로 수행할 수 있습니다.
  • 예: 서버 CPU 사용량, 메모리 사용량을 Kafka를 통해 실시간 모니터링.

Apache Kafka의 기본 개념부터 주요 특징, 구성 요소, 클러스터 구조(KRaft 방식 포함), 그리고 실제 활용 사례까지 살펴보았습니다. Kafka는 대용량 데이터를 빠르고 안정적으로 처리할 수 있는 강력한 스트리밍 플랫폼으로, 실시간 분석 시스템이나 마이크로서비스 환경에서 필수적인 역할을 합니다

 

 

관련 글 링크

 

RabbitMQ와 Kafka - 메시지 대기열 시스템 간의 차이점 - AWS

RabbitMQ는 간단한 아키텍처로 복잡한 메시지 라우팅을 제공하는 반면, Kafka는 애플리케이션이 스트림 기록의 데이터를 처리할 수 있을 만큼 내구성이 우수한 메시지 브로커 시스템을 제공합니다.

aws.amazon.com

 

Kafka란? - Apache Kafka 설명 - AWS

Apache Kafka는 실시간으로 스트리밍 데이터를 수집하고 처리하는 데 최적화된 분산 데이터 스토어입니다. 스트리밍 데이터는 수천 개의 데이터 원본에서 연속적으로 생성되는 데이터로, 보통 데

aws.amazon.com

 

Apache Kafka란? | IBM

웹에서 최고의 인기를 얻고 있는 실시간 이벤트 기반 사용자 경험을 뒷받침하는 오픈 소스 스트리밍 기술인 Apache Kafka에 관해 알아봅니다.

www.ibm.com

 

728x90