[Kafka] Apache Kafka에 대한 개념 정리

곽태민·2025년 12월 14일

TIL

목록 보기
73/77

Apache Kafka 기본 개념 정리

1. kafka의 정의 및 특징

카프카는 대규모 데이터를 실시간으로 처리를 하기 위해 설계된 분산 이벤트 스트리밍 플랫폼이다.

특징설명
메시지 브로커서비스 간 데이터를 주고받을 때 중간에서 관리해주는 중개자 역할을 한다.
고가용성 (HA)클러스터 내의 데이터를 복제(Replication)하여 특정 서버에 장애가 발생해도 서비스가 유지된다.
비동기 처리Producer가 메시지를 보내고 Consumer가 응답할 때까지 기다리지 않아 시스템 성능이 향상된다.
분산 시스템여러 대의 서버(Broker)에 데이터를 분산 저장하여 확장성(Scale-out)이 뛰어나다.
영속성 (Durability)데이터를 메모리가 아닌 디스크에 저장하며, 설정된 기간 동안 데이터를 보관한다.

2. kafka의 주요 구성 요소

Broker (브로커)

  • kafka 클러스터를 구성하는 개별 서버다.
  • 데이터를 수신, 저장하고 consumer에게 전달하는 핵심 역할을 한다.

Topic & Partition (토픽과 파티션)

  • Topic: 데이터가 저장되는 카테고리(이름표). (예: user-login-logs)
  • Partition: 하나의 토픽을 여러 개로 나눈 물리적인 저장 단위.
    * partition을 통해 병렬 처리가 가능해지고, 데이터는 파티션 내에서 Offset 순서대로 저장된다.

Producer / Consumer (프로듀서 / 컨슈머)

  • Producer: 메시지를 생성하여 특정 토픽으로 발행(Publish)하는 주체.
  • Consumer: 토픽을 구독(Subscribe)하여 데이터를 가져와서 처리하는 주체.
  • Consumer Group: 여러 consumper가 협력하여 하나의 토픽을 병렬로 처리할 수 있게 돕는 단위.

3. 왜 대용량 시스템에서 kafka를 사용할까?

대용량 시스템에서 kafka가 필수적인 이유는 아래와 같다.

  1. 압도적인 처리량 (High Throughput)
    • 일반적인 메시지 큐와 달리 디스크 순차 쓰기(Sequential I/O)와 Zero-copy 기술을 사용하여 초당 수백만 건의 데이터를 처리할 수 있다.
  2. 느슨한 결합 (Decoupling)
    • 데이터를 보내는 곳과 받는 곳이 서로의 존재를 몰라도 된다. kafka가 중간 큐 역할을 해주므로 시스템 간 의존성이 낮아진다.
  3. 데이터 유실 방지
    • 데이터를 디스크에 물리적으로 저장하고 복제본을 유지하기 때문에, 갑작스러운 서버 다운에도 데이터가 안전하게 보존된다.
  4. 유연한 확장성
    • 트래픽이 늘어나면 브로커 서버를 추가하거나 파티션을 늘리는 방식으로 아주 쉽게 성능을 확장할 수 있다.
profile
Node.js 백엔드 개발자입니다!

0개의 댓글