본문 바로가기
📚Framework & Library/Kafka

[Kafka] Kafka란? 무엇인가

by inbeom 2023. 10. 2.
728x90
Kafka는 대용량 데이터 스트림을 효율적으로 처리하는 분산 메시지 큐 시스템으로, 실시간 데이터 스트리밍을 지원한다.

 

Kafka는 LinkedIn에서 개발된 오픈 소스 스트리밍 플랫폼으로, 대용량의 실시간 데이터 스트림을 효과적으로 처리하기 위해 만들어졌다.

스트리밍 플랫폼: 실시간으로 데이터를 수집, 처리, 저장 및 전달하는 시스템. 

 

특징

고성능 및 확장성:

 대용량 데이터 스트림을 처리하기 위해 설계되어 있으며, 수천 대의 머신에서도 운영 가능하다.

 

내고장성:

 여러 브로커로 데이터를 복제하여 데이터 손실을 방지하고, 장애 발생 시에도 지속적으로 운영된다.

 

유연한 메시징 시스템:

 다양한 프로듀서 및 컨슈머 언어로 작성된 애플리케이션 간에 데이터를 신속하게 전달한다.

 

저지연:

 실시간 데이터 처리를 위해 설계되어 있어, 데이터를 빠르게 처리하고 전달한다.

 

높은 처리량:

 메시지 처리량이 빠르고, 수많은 프로듀서 및 컨슈머로부터의 동시 접속을 처리할 수 있다. 

 

 

구성

프로듀서 (Producer)

  • 데이터를 생성하고 Kafka Topic으로 전송한다.
  • 실시간 또는 일정 간격으로 로그 데이터, 이벤트 등을 생성하여 전송할 수 있다.

토픽 (Topic)

  • 데이터를 일시적으로 저장하면서 여러 프로듀서와 컨슈머 간의 실시간 데이터 스트리밍을 통제한다. 
  • 논리적인 그룹화를 제공하며, 프로듀서와 컨슈머의 메시지를 송.수신한다. 

브로커 (Broker)

  • 메시지를 저장하고 관리하며, 여러개의 브로커로 구성된 Kafka Cluster가 데이터를 분산 저장하고 처리하는데 사용된다.
  • 실제 물리적 데이터를 처리 및 저장하고 중간 매개체, 데이터 분산 저장, 데이터 복제 등의 역할을 한다. 

컨슈머 (Consumer)

  • Kafka Topic에서 데이터를 소비한다.
  • 토픽에서 데이터를 읽어와서 로그 데이터 분석, 저장 등 필요한 처리를 수행한다.
  • 그룹을 형성하여 병렬 처리가 가능하다.

 

사용 분야 및 예시

실시간 스트리밍 데이터 파이프라인:

  엔터프라이즈 시스템 간의 무수히 많은 데이터/이벤트 레코드를 규모의 제약 없이 실시간으로 전송하도록 설계된 애플리케이션 이다. (데이터 손상, 중복 등의 문제점 제거)

실시간 스트리밍 애플리케이션:

  레코드 또는 이벤트 스트림에 의해 구동되는 애플리케이션, 그리고 자체적으로 스트림을 생성하는 애플리케이션이다. (매장 재고량 업데이트, 클릭 스트림 분석으로 개인별 추천/광고 노출 등이 해당)

Microsoft

실시간 이벤트 처리

  • Azure 서비스들 중 Event Hubs라는 이벤트 스트리밍 플랫폼을 제공하여 실시간 이벤트처리 지원한다. 

AirBnB

로그 처리 및 분석

  • 다양한 애플리케이션에서 발생하는 로그 데이터(사용자 활동, 예약 정보 등)를 수집하고 분석하여 실시간으로 추적하고 분석할 수 있다. 

Netflix

실시간 스트리밍

  • 사용자가 어떤 콘텐츠를 시청하는지 실시간으로 추적하고 해당 정보를 기반으로 알고리즘을 개선하는 등의 다양한 스트리밍 데이터를 처리한다.

 

 

 

 

 

 

reference.

https://www.ibm.com/kr-ko/topics/apache-kafka

https://kajalrawal.medium.com/kafka-broker-kafka-topic-consumer-and-record-flow-in-kafka-ec55104977b8

728x90