[백엔드] Kafka 기본 개념 정리

2026. 3. 13. 18:45·💻 개발/🧬 Backend
728x90
반응형

| 서론

안녕하세요, 팡입입니다!

 

최근, 취업 준비를 하면서 백엔드 JD도 살펴보게 되었는데요? 약 80% 기업들이 자주 사용하는 대규모 트래픽 처리에 필수적인 Apache Kafka(아파치 카프카)의 기본 개념을 핵심 위주로 쉽게 풀어서 정리해보려고 합니다.

 

 

 

| Kafka란 무엇인가

Apache Kafka는 수많은 데이터를 실시간으로 안전하게 주고받기 위해 만들어진 분산 이벤트 스트리밍 플랫폼입니다.

 

쉽게 말해, 애플리케이션들 사이에서 발생하는 다양한 데이터(이벤트)를 마치 흐르는 강물처럼 끊김 없이 전달하고 저장하는 역할을 합니다.

 

1) 특징

  • 메시지 형태의 통신: 데이터를 '메시지'라는 단위로 주고받으며, 이를 안전하게 저장할 수 있습니다.
  • 높은 처리량과 확장성: 데이터 양이 갑자기 늘어나도 서버를 늘려 대응하기 매우 유리한 구조입니다.
  • Pub-Sub 모델: 데이터를 보내는 쪽(Publisher)과 받는 쪽(Subscriber)이 서로를 직접 몰라도 중간의 Kafka를 통해 소통하는 방식을 사용합니다.

 

2) Kafka 사용 사례

: Kafka는 대량의 이벤트 데이터를 실시간으로 수집하고 처리해야 하는 시스템에서 많이 사용됩니다.

 

(1) 실시간 로그 수집 및 처리 (ELK Stack 연동)

: 다양한 서비스에서 발생하는 로그 데이터를 Kafka로 수집한 뒤, ELK Stack을 통해 저장·분석·시각화하는 구조

  • Elasticsearch : 로그 데이터 저장 및 검색
  • Logstash : 로그 데이터 수집 및 처리
  • Kibana : 로그 데이터 시각화 및 분석

(2) 사용자 행동(클릭) 스트림 분석

: 웹 또는 앱에서 발생하는 사용자 클릭, 페이지 이동, 이벤트 로그 등을 Kafka로 스트리밍하여 분석하는 방식

  • 사용자 클릭 이벤트 분석
  • 사용자 행동 패턴 분석
  • 추천 시스템 데이터 수집

(3) IoT 센서 데이터 수집 및 처리

: IoT 환경에서 발생하는 대량의 센서 데이터를 Kafka를 통해 수집하고 실시간으로 처리하는 구조

  • 스마트 공장 센서 데이터
  • 스마트 시티 환경 데이터
  • 차량 텔레메트리 데이터

(4) 금융 거래 실시간 처리

: 금융 시스템에서 발생하는 거래 이벤트를 Kafka로 스트리밍하여 실시간 모니터링 및 이상 탐지에 활용

  • 금융 거래 모니터링
  • 사기 거래 감지(Fraud Detection)
  • 실시간 거래 분석

(5) 마이크로서비스 간 이벤트 전송

: 마이크로서비스 아키텍처에서 서비스 간 데이터를 이벤트 기반으로 전달하기 위한 메시지 브로커 역할

  • 주문 생성 이벤트 전달
  • 결제 완료 이벤트 전달
  • 재고 시스템과 주문 시스템 간 이벤트 동기화

 

 

 

| Kafka의 전체 구조

Kafka 시스템은 크게 세 가지 주인공이 이끌어갑니다.

Producer → Kafka Cluster(Broker) → Consumer
  1. Producer (생성자): 이벤트를 만들어 Kafka에 던져주는 역할입니다.
  2. Kafka Cluster (브로커): 전달받은 이벤트를 안전하게 보관하고 관리하는 저장소입니다.
  3. Consumer (소비자): 보관된 데이터를 필요할 때 가져가서 처리하는 역할입니다.

흐름 요약: Producer가 이벤트를 생성하면 → Kafka Cluster가 이를 저장하고 → Consumer가 원하는 데이터를 읽어갑니다.

 

 

 

| 핵심 구성 요소

1) Producer

Producer는 데이터를 Kafka로 보내는 입구입니다.

 

예를 들어, 사용자의 로그인 기록, 주문 내역, 서비스 로그 등 서비스에서 발생하는 모든 움직임을 Kafka의 Topic으로 전송합니다.

 

Producer는 하나 이상의 Topic에 데이터를 전송할 수 있으며, Topic에 여러 Partition이 존재할 경우 각각의 Partition에 병렬로 데이터를 기록할 수 있습니다.

 

 

2) Topic

Topic은 Kafka에서 이벤트를 구분하는 논리적 단위입니다.

 

 

예를 들어 user-login, order-created처럼 목적에 따라 이름을 붙여 데이터를 분류합니다.

  • 데이터베이스의 '테이블'이나 메시지 큐의 '채널'과 유사한 개념입니다.

 

 

3) Partition

Topic은 내부적으로 여러 개의 Partition으로 나누어 저장됩니다.

 

Partition으로 나누어 사용하는 이유는 다음과 같습니다.

  • 데이터를 한 곳에만 쌓으면 병목 현상이 생길 가능성이 있습니다.
  • 파티션을 여러 개 두어 데이터를 분산 저장하면 병렬 처리가 가능해져 처리 속도가 획기적으로 빨라집니다.

Kafka는 데이터를 Partition 단위로 나누어 여러 서버에 분산 저장하며, 이 구조 덕분에 대량의 이벤트를 빠르게 처리할 수 있습니다.

 

 

4) Offset

Partition 내부의 모든 메시지는 Offset이라는 번호를 가집니다.

  • 0번부터 시작하는 고유 번호가 붙습니다.
  • 이는 메시지의 순서를 나타내는 번호표 역할을 합니다.
  • 예를 들어, Consumer는 "나 여기(Offset 5번)까지 읽었어!"라고 표시하며 데이터를 어디까지 처리했는지 추적합니다.

 

Consumer는 Offset을 기준으로 데이터를 순차적으로 읽습니다.

 

 

5) Consumer

Consumer는 Kafka Topic에서 데이터를 읽어 실제 로직을 수행하는 애플리케이션입니다.

  • 예를 들어 이벤트 처리, 데이터 분석, 다른 시스템으로 전달 등을 수행할 수 있습니다.

Consumer는 pull 방식으로 데이터를 가져옵니다.

 

  • Pull 방식: Kafka가 데이터를 강제로 밀어넣는 게 아니라, Consumer가 자기 속도에 맞춰 데이터를 직접 가져가는(Pull) 방식입니다. 덕분에 Consumer에 과부하가 걸리는 것을 방지할 수 있습니다.

즉, Kafka가 데이터를 보내는 것이 아니라 Consumer가 직접 가져오는 구조입니다.

  • 또한 여러 Consumer를 묶어 Consumer Group으로 운영할 수 있으며, 각 Partition은 그룹 내 하나의 Consumer만 읽도록 분배된다.

 

 

6) Broker

Kafka 소프트웨어가 실행되고 있는 서버 한 대를 의미합니다.

 

  • Producer의 데이터를 받고, 디스크에 저장하며, Consumer의 요청에 응답합니다.
  • 보통 여러 대의 Broker를 묶어 Kafka Cluster를 구성함으로써, 서버 한 대가 고장 나도 데이터가 사라지지 않게 관리합니다.

 

 

7) ZooKeeper

과거에는 Kafka 클러스터의 상태 관리와 설정 공유를 위해 ZooKeeper라는 별도의 도구가 꼭 필요했습니다.

  • 주요 역할: 브로커 관리, 리더 선출, 설정값 동기화 등을 담당합니다.
  • 최신 트렌드: 최근 버전에서는 ZooKeeper 없이도 동작하는 KRaft 모드가 도입되어 관리가 훨씬 간편해지고 있습니다.

 

 

 

| Kafka를 사용하는 이유

1) 데이터 영속성 (Durability)

Kafka는 이벤트를 메모리가 아닌 디스크에 로그 형태로 저장합니다.
따라서 시스템 장애가 발생해도 데이터를 잃지 않습니다.

2) 대규모 트래픽 처리

Topic을 여러 Partition으로 분할하여 병렬 처리, 수평 확장이 가능합니다.

덕분에 초당 수백만 개의 이벤트 처리도 가능합니다.

3) 높은 안정성

Kafka는 데이터 복제 (Replication), Consumer Offset 관리, 장애 복구 기능을 통해 높은 안정성과 내결함성을 제공합니다.

 

 

 

| Kafka 데이터 흐름 정리

마지막으로 데이터가 어떻게 흐르는지 정리해 볼까요?

Producer
   ↓
Topic
   ↓
Partition (Offset으로 관리)
   ↓
Kafka Broker (Cluster)
   ↓
Consumer

 

  1. Producer가 이벤트를 생성합니다.
  2. 이벤트는 특정 Topic의 Partition에 저장됩니다.
  3. 각 메시지는 파티션 내에서 고유한 Offset 번호를 부여받습니다.
  4. Kafka Broker가 이 데이터를 디스크에 안전하게 유지합니다.
  5. Consumer가 자신의 Offset을 기준으로 데이터를 하나씩 읽어가며 처리합니다.

 

 

 

| 결론

Kafka의 기본 개념이 조금 정리가 되셨나요?

 

처음에는 생소할 수 있지만, '분산된 저장소에 순서대로 쌓이는 로그 데이터'라는 핵심을 기억하시면 훨씬 이해하기 쉬우실 거예요!

 

🔗 참고 자료

- https://kafka.apache.org
- https://www.youtube.com/watch?v=ixgCViMl4Zc
- https://www.youtube.com/watch?v=Nh3AZx8D9KY

 

 

728x90
반응형

'💻 개발 > 🧬 Backend' 카테고리의 다른 글

[백엔드] MSA(Microservice Architecture)란 무엇인가  (1) 2026.03.13
'💻 개발/🧬 Backend' 카테고리의 다른 글
  • [백엔드] MSA(Microservice Architecture)란 무엇인가
pangil_kim
pangil_kim
기록을 통해 지속적인 성장을 추구합니다.
  • pangil_kim
    멈추지 않는 기록
    pangil_kim
  • 전체
    오늘
    어제
  • 📝 글쓰기
      ⚙️ 관리

    • 분류 전체보기 (434) N
      • 💻 개발 (188) N
        • ※ 참고 지식 (10)
        • 🦕 React (16)
        • 🎩 Next.js (25)
        • 📘 TypeScript (4)
        • 📒 JavaScript (9)
        • 🟩 Node.js (7)
        • 📀 MySQL (24)
        • 🌸 Spring Boot (5)
        • 👷 SveleteKit (24)
        • 🩵 Flutter (11)
        • 🌀 Dart (2)
        • 🌈 CSS (5)
        • 🔸Git (1)
        • 🔥 Firebase (4)
        • 🧑🏻‍💻 코테 (29)
        • 🕸️ 알고리즘 (5)
        • 🌤️ AWS (1)
        • 🤖 AI Agent (1)
        • 🧬 Backend (2)
        • 🅰️ Angular (3) N
      • 📋 프로젝트 (6)
        • ☄️ 트러블 슈팅 (3)
        • 🧑🏻‍💻 서비스 소개 (3)
      • ✍🏻 회고 (67)
        • ☀️ 취준일지 (13)
        • 🍀 우테코 (32)
        • 👋 주간회고 (6)
      • 📰 정보 공유 (12)
      • 🧑🏻‍💻 개발자라면? (1)
      • 🏫 한동대학교 (153)
        • Database (15)
        • Software Engineering (18)
        • EAP (22)
        • 일반화학 (26)
        • 25-1 수업 정리 (19)
        • Computer Networking (36)
        • OPIc (2)
        • 미술의 이해 (15)
  • 최근 글

  • 인기 글

  • 태그

    QT
    예배
    글로벌리더십학부
    프리코스
    FE
    computer networks and the internet
    날마다 솟는 샘물
    주일
    전산전자공학부
    어노인팅
    설교
    웹 프론트엔드 8기
    우아한테크코스
    프론트엔드
    한동대학교
    GLS
    typeScript
    날솟샘
    부트캠프
    우테코
    우테코 8기
    찬양
    csee
    데이터베이스
    고윤민교수님
    CCM
    컴네
    네트워킹
    웹개발
    묵상
  • 최근 댓글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
pangil_kim
[백엔드] Kafka 기본 개념 정리
상단으로

티스토리툴바