본문 바로가기

카테고리 없음

Kafka 구조 완전 정복 : 왜 이렇게 많이 쓰일까

✅ 개요

  • Apache Kafka: 아파치 재단의 오픈소스 실시간 데이터 스트리밍 플랫폼
  • 사용처: 포춘 100대 기업 중 80% 이상 사용
  • 목적: 대용량 트래픽 처리, 실시간 분석, 로그 수집 등에 최적화

✅ Kafka 핵심 구조 정리

구성요소 설명

Producer 데이터를 생성하여 Kafka에 전달하는 역할
Kafka Cluster 데이터를 저장하고 관리하는 저장소, 중심에는 브로커 존재
Consumer Kafka에서 데이터를 읽어와 처리
Topic 이벤트 분류 단위 (토픽 > 파티션 구성)
Partition 이벤트 저장 단위, 병렬 처리 가능
Offset 각 메시지의 고유 위치값 (정렬 및 순서 유지)

✅ 시각자료: Kafka 기본 구조도

✅ Kafka 메시지 처리 흐름

Producer → Topic(Partition) → Offset 부여 → Consumer가 순서대로 처리

🛠 동작 흐름 예시

  1. Producer → 특정 Topic에 이벤트 전송
  2. Kafka는 해당 이벤트를 Partition에 저장하며 Offset 부여
  3. Consumer는 Partition 단위로 이벤트를 읽고 처리
  4. Consumer는 Offset을 기록하여 중단 지점부터 재처리 가능

예)

UserLogin이라는 Topic에 이벤트 3개가 순서대로 들어옴

각 메시지는 Partition에 저장되고 Offset 0, 1, 2 할당

Consumer가 Offset 기준으로 순차적으로 읽음

 

📈 Kafka의 장점

  • 장애에도 안전한 디스크 저장
  • 파티션 기반 병렬처리 구조
  • 확장 용이 / 고가용성 구조
  • 웹MQ보다 안정적이고 빠른 복구 가능

 

🧠 초보자를 위한 Kafka 쉬운 설명

🧺 Kafka는 뭐하는 애야?

Kafka는 엄청 빠르고 튼튼한 택배 시스템입니다.
데이터라는 '소포'를 여러 곳에 '빠르고 안전하게' 보내주는 역할을 해요.


🧑‍🍳 누가 어떤 역할을 하나요?

  • Producer (생산자)
    : 데이터를 만들어서 Kafka한테 보내요.
    예: “회원가입이 되었어요!”, “결제가 완료되었어요!”
  • Kafka Cluster (브로커)
    : 받은 데이터를 줄 세워서 안전하게 저장해두는 창고 역할이에요.
    여러 대의 서버가 함께 일하면서 속도를 높이고, 혹시 문제가 생겨도 복구할 수 있게 해줘요.
  • Topic
    : 데이터를 종류별로 분류하는 상자예요.
    예: 주문 관련 데이터는 order, 결제는 payment
  • Partition
    : Topic 안에 나뉘어진 서랍 칸이라고 보면 돼요.
    이걸로 데이터 처리 속도가 훨씬 빨라져요.
  • Consumer (소비자)
    : 저장된 데이터를 꺼내서 실제로 사용하는 사람이에요.
    예: 주문 내역을 분석하거나, 결제 데이터를 다른 시스템에 보내는 것
  • Zookeeper (관리자)
    : Kafka 창고 전체를 감시하고 조율하는 관리자예요.
    누가 리더인지 정하고, 서버가 추가되거나 빠질 때도 Zookeeper가 조정해줘요.

🚀 왜 Kafka를 쓰는 거야?

  • 데이터가 날아가지 않아요
    → 디스크에 저장해서 시스템이 꺼져도 복구 가능해요
  • 아주 빠르게, 동시에 처리해요
    → Partition을 나눠서 여러 개의 데이터를 한꺼번에 처리 가능해요
  • 서비스가 커져도 문제 없어요
    → 나중에 쉽게 확장할 수 있어요

✅ 마무리 한줄 요약

Kafka는 엄청난 양의 데이터를 빠르게 모아서, 안전하게 저장하고, 나눠주는 똑똑한 택배 시스템입니다.