[개념정리] Kafka란 무엇인가?

2026. 1. 2. 21:01·Spring/백엔드 기초

정리에 앞서.. 

대규모 트래픽 관련 강의주차에 접어들면서 트래픽 증가 시에 반드시 알아야 할 Kafka의 개념과 활용, 그리고 실습 간 깨달았던 점들을 정리하고자 한다.

 

🔍 왜 Kafka를 사용해야 하는가?

일반적으로 서버의 요청 및 처리과정은 아래와 같다.

사용자 요청 -> 서버 -> DB/Redis 저장 / 조회

 

 

그러나 트래픽이 급격하게 증가하게 되는 경우 다음과 같은 문제가 발생하게 된다.

 

  1. 서버는 모든 요청을 즉시 처리 해야한다.
    • 요청이 증가하면 서버는 쉬지 않고 요청을 즉시 처리해야하며, 그 범위를 넘어서는 경우 장애가 발생할 수 있음.
  2. DB / Redis 는 동시에 많은 요청을 처리할 수 없다.
    • DB / Redis 의 처리 가능량을 초과하면 병목현상이 발생하게 됨.
  3. 사용자의 행동 데이터는 매우 빠르게 쌓인다.
    • 페이지 조회 / 상품 클릭 / 장바구니 추가 등 데이터를 서버가 즉시 처리하는 방식은 부담이 커지게 됨.

 

Kafka는 위와 같은 문제를 해결하기 위해 요청을 잠시 쌓아두는 큰 통(버퍼) 역할을 수행하게 된다.

내용을 정리하면 크게 3가지로 볼 수 있는데

 

1. 버퍼(Buffer) 역할 → API 서버가 죽지 않음

  • 실제 처리는 Consumer가 진행하게 되며, API 서버가 무거운 일을 하지 않기 때문에 증가한 트래픽을 버텨낼 수 있음.

2. 비동기 처리 → 안정적으로 처리 가능

  • 데이터 유실이 발생하지 않고, 처리된 메시지는 즉시 삭제되는 것이 아닌 설정된 보관 기간에 따라 삭제됨.

3. 파티션 기반 병렬 처리 → 처리량이 폭발적으로 증가

  • Kafka는 파티션이라는 병렬 처리 다누이를 제공함으로서 각 파티션을 여러 Consumer가 병렬로 처리할 수 있도록 한다.

 

✅ Kafka의 활용 범위는 어떻게 되는가?

실시간 인기 카테고리

  • 사용자 클릭/조회 이벤트를 Kafka에 저장한다.
  • Consumer 가 Kafka 이벤트를 읽어 Redis 점수를 업데이트한다.
  • 인기 순위는 Redis에서 즉시 조회할 수 있다.

개인화 추천 기능

  • 사용자가 어떤 카테고리를 많이 눌렀는지 Kafka에 저장한다.
  • Kafka → Redis에 사용자별 점수를 반영한다.
  • 추천 API에서 사용자 맞춤 카테고리를 제공한다.

☑️ Kafka란 그래서 무엇인가?

Kafka는 이벤트를 순서대로 저장해두는 큰 창고라고 볼 수 있다. 

API 서버는 발생한 이벤트를 Kafka에 넣기만 하며

Kafka는 들어온 모든 메시지를 순서대로 차곡차곡 저장하고

Consumer는 저장된 메시지를 하나씩 꺼내어 처리하게 된다.

→ 이로 인해 Kafka는 이벤트를 실시간으로 처리하지 않아도 되도록 도와주는 중간 저장서 역할을 수행하게 되는 것.

✅ Kafka의 핵심 구성 요소

Producer(프로듀서) - Kafka로 메시지를 보내는 역할

API 서버가 Producer 역할을 수행한다.

  • 이벤트 생성 → Topic(토픽)에 전달

Consumer(컨슈머) - Kafka에서 메시지를 읽는 역할

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

 

Topic(토픽) - 메시지를 넣어두는 폴더

Topic은 Kafka에서 메시즈를 종류 별로 분리하는 단위

Partition(파티션) - 통을 나눈 칸 (병렬 처리의 핵심)

Topic을 여러 칸으로 나눈 것이 Partition

  • 파티션이 필요한 이유?
    • 여러 개의 메시지를 동시에 처리할 수 있도록 하기 위해
  • 파티션의 핵심 특징
    • 하나의 파티션은 한 시점에 오직 하나의 Consumer만 처리할 수 있음
    • 파티션은 늘릴 수 있지만, 이미 존재하는 파티션을 줄일수는 없음
    • 한번에 많이 생성한다기보다는 운영과 현황에 맞추어 추가 증설을 진행하는 편

 

Consumer Group(컨슈머 그룹) - 일하는 팀

Consumer Group은 여러 Consumer(컨슈머)를 팀으로 묶어 메시지를 효율적으로 나누어 처리

→ 컨슈머 그룹은 팀에 소속된 컨슈머가 어떤 파티션을 담당할지 지정해준다

 

  • 파티션 수 = 컨슈머 수 가 가장 최고의 효율을 낼 수 있으며
    • 컨슈머가 많으면 : 일을 하지 않고 노는 Consumer가 발생
    • Consumer가 적으면 : 1개의 Consumer가 2개 이상의 Partition을 담당해서 처리해야 함 

파티션 수와 컨슈머 수가 동일할 때 (최고의 효율)
파티션 3, 컨슈머 2인 경우

 

파티션 3, 컨슈머 1인 경우
파티션 3, 컨슈머 4인 경우

 

Offset - 메시지 번호 (어디까지 읽었는지 기록)

Consumer는 Offset을 보고 어디까지 읽었는지 기억한다.

그로 인해 서버가 재시작해도 이어서 읽을 수 있고, 메시지가 순서대로 안전하게 처리된다.

 

✅ Kafka에 대해 착각할 수 있는 점

1. Consumer를 늘린다고 하여 무조건 빨라지는 것이 아님

  • 병렬 처리는 파티션 수에 의해 결정된다.

2. Kafka는 DB가 아니다.

  • Kafka는 저장은 하지만 조회용은 아니다.
    • 조회가 빠른 것은 Redis
    • 저장/재처리/순서 보장은 Kafka

3. Kafka는 이벤트를 실시간 처리하는 것이 아니다.

  • 실시간 처리를 하는 것처럼 보이지만, 실제로는 이벤트를 저장해두었다가 순서대로 처리할 수 있게 해주는 구조

'Spring > 백엔드 기초' 카테고리의 다른 글

[개념정리] Kafka 클러스터 구조 이해하기  (0) 2026.01.05
[개념정리] Kafka - Broker와 Consumer Group  (0) 2026.01.05
[백엔드 기초] Redis 기초 개념 정리  (0) 2025.12.08
[개념정리] WebSocket 과 STOMP  (0) 2025.12.02
[백엔드 기초] 데이터베이스 기초  (0) 2025.11.13
'Spring/백엔드 기초' 카테고리의 다른 글
  • [개념정리] Kafka 클러스터 구조 이해하기
  • [개념정리] Kafka - Broker와 Consumer Group
  • [백엔드 기초] Redis 기초 개념 정리
  • [개념정리] WebSocket 과 STOMP
stark77
stark77
하마의 IT 자기개발 이모저모, 백엔드 개발자로 거듭나기
  • stark77
    하마의 개발자 성장일기
    stark77
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 컴퓨터구조와 운영체제
        • 컴퓨터구조
        • 운영체제
      • SQL 기초
      • Spring
        • 백엔드 기초
        • Spring 실습
      • JAVA
        • Java 실습
      • HTML&CSS
        • HTML&CSS 실습
      • Git&GitHub
        • Git&GitHub 실습
      • 내배캠 끄적끄적
        • Today I Learned
      • 유용한 툴 및 사이트 정리
      • 취미
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    MVC
    객체지향
    algorithm
    Java 문법기초
    HTML&CSS
    Spring
    jsp
    프로세스와 쓰레드
    RestTemplate
    Github
    WebSocket
    thymleaf
    백엔드 기초다지기
    JPA
    네트워크 기초
    git
    Spriingboot
    객체지향프로그래밍
    String.format
    java
    BEAN
    Til
    경합조건과 교착상태
    웹소켓
    SpringSecurity
    다형성
    백엔드 기초
    for문
    실시간 데이터 처리
    Stomp
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
stark77
[개념정리] Kafka란 무엇인가?
상단으로

티스토리툴바