쏭의 개발 블로그

Kafka와 대규모 데이터 처리 본문

Back-end

Kafka와 대규모 데이터 처리

songu1 2025. 6. 22. 11:31

[1] Kafka란?

실시간으로 스트리밍 데이터를 수집하고 처리하는 데 최적화된 분산 이벤트 스트리밍 플랫폼

  • 대규모 데이터를 실시간으로 처리
  • 여러 서비스 간에 대규모 이벤트를 생산 및 소비하며 통신

특징

  • 고성능, 확장성, 내구성, 가용성

Producer와 Consumer

  • Producer : 데이터 생산자
    • Kafka로 데이터를 보내는 클라이언트로, 데이터를 Topic단위로 생산하고 전송한다
  • Consumer : 데이터 소비자
    • Kafka에서 데이터를 읽는 클라이언트로, 데이터를 Topic 단위로 소비하고 처리한다.
  • Producer→Consumer로 데이터를 전송한다 (API, Message Queue)

[2] 대규모 데이터 처리를 위한 구조

(1) 기본 구조 : API 통신

직접 통신하는 방법으로, 요청/응답의 구조

  • 동기적인 방식이다.

장점

  • 단순하고 간단하여 이해하기 쉽다

문제점

  • Consumer에 장애가 발생할 경우,
    • Producer는 Consumer를 직접 호출하기 때문에 장애가 전파될 수도 있다
    • Consumer에 요청이 전달되지 않는다면, 데이터 유실 가능성이 있다.
    ⇒ 대규모 데이터를 안전하게, 고성능으로 처리하는데 한계가 있다.
  • 확장성 제한 사항
    • 각 요청에 즉각적인 리소스와 동기적 처리가 필요하므로 부하가 높은 시나리오에서는 확장이 어려울 수 있다.
  • 오류 처리
    • consumer는 메시지 큐와 같은 내장 메커니즘 없이 실패와 재시도를 처리해야함

사용

  • 단순성과 동기식 통신
  • 대규모 처리에는 부적합하다.

 

(2) Message Queue

데이터의 생산자와 소비자간 비동기적 통신을 가능하게 하는 시스템

  • Producer와 Consumer 사이의 데이터 전송을 Message Queue에 위임한다.
  • 분산 환경에서 시스템 간 데이터를 교환하기 위해 사용되는 통신 기법이다.
  • 메시지는 큐에 저장되며, 소비자는 필요할 때 이 메시지를 읽어들여 처리한다.

 

장점

  • Producer와 Consumer가 직접적으로 결합되지 않음
    • 장애 전파 위험이 감소
    • 데이터 유실 위험을 낮출 수 있다
    • 데이터에 대한 처리를 비동기로 수행 가능
  • 확장성이 좋음
    • 생산자에게 영향을 주지 않고 새로운 소비자를 추가하여 증가된 부하를 처리할 수 있어 수평적 확장이 쉽다.
  • 이벤트 기반 아키텍처로 실시간으로 이벤트에 대응할 수 있으므로 응답성이 뛰어나다.

단점

  • 시스템 아키텍처가 복잡하다.
  • 큐이기 때문에 사용자가 많아지거나 데이터가 많아지면 요청에 대한 응답이 늦어지게 됨

(3) Message Broker로의 확장

Producer로부터 전달받은 메시지를 Consumer로 전달해주는 중간 역할이며 응용 소프트웨어 간에 메시지를 교환할 수 있게 한다

  • 단일 Message Queue의 한계를 극복
    • Producer와 Consumer가 많아질때
    • 처리해야할 데이터가 늘어날때
    • Message Queue에 장애가 발생할 때
    • 데이터에 대해 복잡한 라우팅이 필요할때
    ⇒ Message Broker로 확장

  • Producer가 데이터를 생산(publish)하면 Consumer는 데이터를 구독(subscribe)해서 가져오는 방식이다 : pub/sub 패턴
    • Consumer가 Message Broker에서 데이터를 pull해오는 방식으로 Consumer가 자신의 처리량에 따라 조절 가능하다

 

[3] Kafka 구조

(1) Kafka Broker

  • Kafka에서 데이터를 중개 및 처리해주는 애플리케이션 실행 단위
  • Producer와 Consumer 사이에서 데이터를 주고 받는 역할
  • topic 단위로 데이터 생산/소비

(2) Kafka Cluster

  • 여러개의 Broker가 모여서 하나의 분산형 시스템을 구성한 것
  • 대규모 데이터에 대해 고성능, 안전성, 확장성, 고가용성 등을 지원(데이터의 복제, 분산 처리, 장애 복구 등)

사용하는 이유

  • 단일 Broker는 처리량에 한계가 있음
  • 여러 대 Broker를 묶어 Cluster를 구성해 처리량과 안정성 증가
  • Topic의 데이터를 여러 Broker에 나누어 저장하고 병렬로 처리 가능

(3) Topic과 Partition 구조

Topic

  • Kafka에서 데이터의 논리적인 구분 단위
  • 여러 Broker에 걸쳐 병렬 처리 가능

Partition

  • Topic이 물리적으로 분산되는 단위
  • 한 Topic은 여러 Partition으로 나뉨
  • Partition 단위로 데이터가 저장되고 처리됨
  • 특징
    • 각 Partition은 연속적(순차적)으로 데이터 기록
    • Partition 간에는 데이터 순서 보장되지 않음
    • 여러 Broker에 분산되어 저장 및 병렬 처리됨
    • Partition 수가 많을수록 처리량과 확장성 증가

 


https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8%EB%A1%9C-%EB%8C%80%EA%B7%9C%EB%AA%A8-%EC%8B%9C%EC%8A%A4%ED%85%9C%EC%84%A4%EA%B3%84-%EA%B2%8C%EC%8B%9C%ED%8C%90/inquiries?gad_source=1&gad_campaignid=20714471420&gbraid=0AAAAADAClSAIgeHpLtpBwhJ6HHpQEUk2L&gclid=Cj0KCQjwsNnCBhDRARIsAEzia4BdVDf8IDypwPzOGM4G3EWvep7yV9qFLQ7_d7IypAJs6Cw1UKLvUgcaAqgsEALw_wcB

 

스프링부트로 직접 만들면서 배우는 대규모 시스템 설계 - 게시판 강의 - 수강 전 문의 | 인프런

수강 전 궁금한 점이 있다면? 인프런 수강 전 문의하기를 활용해 궁금한 내용을 해결할 수 있어요! - 수강 전 문의 | 인프런

www.inflearn.com