Skip to content

library kafka

qbsb147 edited this page Mar 21, 2026 · 1 revision

📦 Kafka 개념 및 아키텍처 정리

📌 Kafka란?

Kafka는 이벤트 기반(Event-Oriented) 분산 스트리밍 플랫폼이다.

  • 이벤트(메시지)를 중심으로 데이터 흐름 구성
  • 대량의 데이터를 실시간으로 수집 / 처리 / 전달
  • Pub/Sub 모델 기반 메시징 시스템

📌 Kafka의 주요 특징

Event-Oriented (이벤트 중심 구조)

  • 시스템이 이벤트를 기준으로 동작
  • 데이터 변경, 주문 발생 등 모든 것이 이벤트

Publish-Subscribe 모델

  • Producer → Topic에 메시지 발행
  • Consumer → Topic 구독 후 메시지 소비

👉 특징

  • 하나의 메시지를 여러 Consumer Group이 동시에 소비 가능
  • 서비스 간 결합도 낮음

👉 예

  • 주문 이벤트 발생
    • 주문 서비스 → 주문 처리
    • 알림 서비스 → 알림 전송
    • 분석 서비스 → 데이터 분석

MQ(Point-to-Point)와 차이

  • MQ: 메시지 1개 → Consumer 1개 처리 후 삭제
  • Kafka: 메시지 유지 + 여러 Consumer Group이 독립적으로 소비

분산 아키텍처

  • 여러 Broker로 구성된 클러스터
  • 데이터 분산 저장 및 처리

확장성 (Scale-Out)

  • Broker 추가로 수평 확장 가능
  • Partition 기반 병렬 처리 지원

📌 핵심 구성 요소

Cluster

  • 여러 Broker로 구성된 Kafka 전체 시스템

Broker

  • Kafka 서버
  • 메시지를 저장하고 전달하는 역할

Event (Message)

  • Kafka에서 처리되는 데이터 단위

구성:

  • Key
  • Value
  • Timestamp

Producer

  • 데이터를 생성하여 Topic에 발행

Consumer

  • Topic에서 데이터를 읽어 처리

Consumer Group

👉 Consumer들의 논리적 묶음

특징

  • 같은 Group → Partition을 나눠 처리 (병렬 처리)
  • 다른 Group → 동일 메시지를 각각 소비

Topic

  • 메시지를 구분하는 카테고리

Partition

👉 Topic을 물리적으로 나눈 단위

  • 병렬 처리 가능
  • 여러 Broker에 분산 저장

특징

  • Partition 내부 → 순서 보장
  • Partition 간 → 순서 보장 안됨

Offset

👉 메시지의 순번 (위치)

  • Consumer는 Offset 기준으로 읽음
  • 어디까지 읽었는지 추적 가능

📌 동작 구조 예시

Producer → Topic → Partition(0,1,2)

Consumer Group A (주문 처리)
- Partition 0 → Consumer 1
- Partition 1 → Consumer 2
- Partition 2 → Consumer 3

Consumer Group B (알림 서비스)
- 동일한 메시지를 별도로 소비

👉 핵심

  • Group이 다르면 메시지를 각각 소비
  • 같은 Group 내부에서는 Partition 기준 분산 처리

📌 Replication (복제)

Kafka는 가용성을 위해 Partition을 복제한다.

구성

  • Leader Partition

    • 실제 읽기/쓰기 담당
  • Follower Partition

    • Leader를 복제

ISR (In-Sync Replica)

👉 Leader와 동기화된 Replica 집합

  • Leader 장애 시 ISR에 있는 Replica만 승격 가능
  • 데이터 정합성 보장

📌 Kafka Controller & Zookeeper

Controller

  • Broker 중 하나가 담당
  • Partition 리더 할당 및 상태 관리

Zookeeper

(※ 최신 Kafka에서는 제거되는 방향이지만, 기존 구조 기준 설명)

  • Broker 메타데이터 관리
  • Controller 선출

📌 Kafka의 병렬 처리

  • Partition 단위로 병렬 처리 가능
  • Consumer 수 ≤ Partition 수

👉 주의

  • Consumer > Partition → 일부 Consumer는 idle 상태
  • 무작정 늘리면 리소스 낭비

📌 메시지 처리 특징

순서 보장

  • 같은 Partition 내에서만 보장

메시지 보관

  • 메시지는 바로 삭제되지 않음
  • 일정 기간 유지 후 삭제 또는 압축

📌 예외 처리 및 메시지 유실

Kafka는 재처리를 지원하지만 설정에 따라 문제가 발생할 수 있다.

문제 상황

  • Offset을 먼저 commit
  • 이후 처리 실패

👉 결과

  • 메시지가 처리된 것으로 간주 → 유실

해결 방법

  • 수동 commit
  • 예외 처리 로직 구현

📌 Kafka 생태계

Kafka Client

  • Producer / Consumer 구현 라이브러리

Kafka Connect

외부 시스템과 데이터 연동

  • Source Connector → 외부 → Kafka
  • Sink Connector → Kafka → 외부

👉 ETL 용도

Kafka Streams

  • 실시간 데이터 처리 API
  • 변환, 필터링, 집계 가능

Kafka MirrorMaker

  • Kafka 클러스터 간 데이터 복제
  • DR(재해 복구) 용도

ksqlDB

  • SQL 기반 스트림 처리
  • 실시간 데이터 분석 가능

📡 이벤트 스트리밍

⚙️ 개발 환경 구축

Websocket

Kafka

Redis

Debezium

🧩 기능 구현

이벤트리스너(Spring)

Pub/Sub 기반 메세지 처리(Redis)

이벤트 스트리밍 처리(Kafka)

CDC(Debezium)

🧠 개념

🎯 설계 패턴

🏗️ 아키텍처

📚 기술 스택

Clone this wiki locally