inblog logo
|
LifeLog, DevLog
    Kafka

    Kafka 개요, 구성요소

    Kafka, Kafka의 사용 목적 및 구성요소
    KYJTHEYJ's avatar
    KYJTHEYJ
    Apr 01, 2026
    Kafka 개요, 구성요소
    Contents
    Kafka왜 사용하는가?Kafka의 활용 방안Kafka 의 대략적인 구조Producer, Consumer, Topic, Partition, Consumer Group, OffsetProducerConsumerConsumer GroupTopicPartitionOffset그외 특징

    Kafka

    실시간 데이터 스트리밍 처리를 위한 분산 데이터 스트리밍 도구

    왜 사용하는가?

    트래픽이 엄청나게 많이 발생 하는 경우 (한정 상품 재입고, 대규모 참여 타임세일 등) DB나 Redis는 동시에 그렇게 많은 요청을 처리할 수가 없음

    그래서 Kafka 에 담아 두었다가 작업을 천천히 처리할 수 있게 해줌

    그 작업 처리 방식엔 2가지 처리 방안이 있음

    • 비동기 처리

      • Kafka 가 이벤트를 저장하고 있기 때문에 DBMS 관련이 느리더라도 천천히 재처리 가능

    • 파티션 기반의 병렬 처리

      • Kafka 는 Partition 이라는 병렬 처리 단위를 제공함

      • Kafka 는 메세지를 파티션 단위로 나뉘어 저장 하고 Consumer 가 병렬로 처리할 수 있도록 함

    즉, Kafka 는 메세지를 안전하게 저장하여 Consumer 들이 Partition 단위로 빠르게 처리하게 해줌

    → 대규모 서비스를 운영하기 위한 기술

    Kafka의 활용 방안

    • 실시간 인기 카테고리

      • 사용자의 클릭/조회 이벤트를 Kafka 에 저장

      • Consumer 가 Kafka 이벤트를 읽어 Redis의 Score 를 업데이트

      • 인기 순위는 Redis 를 통한 즉시 조회

    • 개인화 기능

      • 사용자가 어떤 카테고리를 많이 조회하는지 Kafka 에 저장

      • Kafka → Redis 에 사용자별 점수 반영

      • 추천 API를 통해 사용자 맞춤 카테고리 제공

    Kafka 의 대략적인 구조

    2 Partiton 1 Consumer 의 구조

    Producer, Consumer, Topic, Partition, Consumer Group, Offset

    Producer

    Kafka 로 메세지를 보내는 역할

    • 보통 API 서버가 Producer 역할을 함

      • 이벤트를 생성하고 Topic 이라는 영역으로 전달

    Consumer

    Kafka 에 쌓인 이벤트를 하나씩 읽어 처리하는 처리자

    Consumer Group

    여러 Consumer를 팀으로 묶어 나눈 것

    • 1개의 Partition 은 오직 1개의 Consumer 만 처리할 수 있음

      • Consumer Group 은 팀에 소속된 Consumer 가 어떤 파티션을 담당할지 지정해줌

    Topic

    Kafka 에서 같은 종류의 메세지별 분리 단위

    • 주문 확정의 이벤트들의 모임

    • 예매 시도의 이벤트들의 모임

    Partition

    Topic 을 여러 칸으로 나눈 것

    • 메세지 처리를 동시에 할 수 있게 하기 위함

    • Partition 수와 Consumer 수는 동일한 것이 이상적

    • 늘린 Partition 은 다시 줄일 수 없음

    Offset

    메세지의 번호

    • 어디까지 읽었는가를 기록

    • 서버가 재시작 해도 이어서 읽을 수 있음

      • 위 사진에서 1번 처리를 하면 Offset 1번을 기록 해두고 2번 이벤트의 처리를 요구 그러다가 더 이상 Offset 없으면 Consumer 는 다음 Offset 이 생성 될 때까지 대기

    그외 특징

    • Kafka 는 실시간 처리를 하는 것은 아니다

      • 이벤트를 저장해 두었다가 순서대로 처리할 수 있게 해주는 도구

    • DB가 아니다

      • 저장과 재처리, 처리의 순서를 보장해주도록 도와주는 도구

    • 병렬처리는 Partition 의 수에 결정되지 Consumer 의 수에 결정되는 것이 아니다

      • Partition 보다 Consumer 의 수가 많으면 남은 Consumer 는 대기 상태에 머무름

    Share article
    Contents
    Kafka왜 사용하는가?Kafka의 활용 방안Kafka 의 대략적인 구조Producer, Consumer, Topic, Partition, Consumer Group, OffsetProducerConsumerConsumer GroupTopicPartitionOffset그외 특징

    LifeLog, DevLog - https://github.com/KYJTHEYJ

    RSS·Powered by Inblog