머신러닝 ML/데이터 엔지니어링 DE

Kafka: 대용량 실시간 데이터 스트리밍 플랫폼

비즈니스 환경에서 데이터는 굉장히 빠른 속도로 생성되고 처리되어야 합니다.

기업은 이런 대용량의 데이터를 실시간으로 수집하고 분석하고자 하는 요구 사항을 가지고 있습니다.

이에 따라 등장한 Apache Kafka는 대용량 실시간 데이터 스트리밍을 위한 강력한 플랫폼으로 각광받고 있습니다.

 

카프카란?

카프카는 분산 데이터 스트리밍 플랫폼으로, LinkedIn에서 개발되었습니다.

이후 Apache Software Foundation에서 오픈소스로 관리되며, 많은 기업에서 대용량 실시간 데이터의 수집, 저장, 처리를 위해 광범위하게 사용되고 있습니다.

 

기본 아키텍처

카프카의 아키텍처는 생산자(Producer), 브로커(Broker), 소비자(Consumer), 이렇게 세 가지 주요 구성 요소로 이루어져 있습니다.

 

생산자(Producer)

  • 데이터를 생성하고 카프카에 전송하는 역할을 합니다.
  • 여러 생산자가 동시에 데이터를 보낼 수 있으며, 데이터는 토픽(Topic)이라는 단위로 구분됩니다.

브로커(Broker)

  • 카프카 클러스터의 핵심 구성 요소로, 데이터를 저장하고 관리하는 서버입니다.
  • 여러 대의 브로커가 클러스터를 형성하여 고가용성과 확장성을 제공합니다.

소비자(Consumer)

  • 데이터를 읽어오고 처리하는 역할을 합니다.
  • 여러 소비자가 동시에 특정 토픽의 데이터를 소비할 수 있으며, 각 소비자는 자신만의 오프셋(Offset)을 관리하여 읽어야 할 데이터의 위치를 추적합니다.

 

대표적인 특징 소개


1. 분산 아키텍처

  • 카프카는 분산 시스템으로 설계되어 여러 대의 머신에 데이터를 분산 저장하고 처리할 수 있습니다.
  • 여러 브로커로 이뤄진 클러스터 형태로 동작하며, 이는 데이터의 안정성과 가용성을 확보합니다.

2. 확장성

  • 대용량의 데이터를 처리하기 위해 카프카는 수평적 확장이 가능한 아키텍처를 제공합니다.
  • 비즈니스 요구사항에 따라 새로운 브로커, 프로듀서, 컨슈머를 간편하게 추가하여 클러스터를 확장할 수 있습니다.

 

3. 내결함성

  • 레플리카와 파티셔닝을 통해 카프카는 내결함성을 보장합니다.
  • 데이터의 복사본을 여러 브로커에 저장하여 하나의 브로커에 장애가 생겨도 데이터 손실을 방지합니다.
  • 장애 발생 시, 자동으로 다른 브로커로 트래픽을 전환하여 서비스를 지속해서 제공합니다.


4. 고성능

  • 카프카는 대량의 데이터를 고속으로 처리할 수 있는 높은 처리량(throughput)을 제공합니다.
  • 메시지의 효율적인 쓰기 및 읽기를 위해 최적화된 스토리지 엔진을 사용합니다.


5. 유연한 데이터 보존

  • 카프카는 데이터를 일정 기간 보관할 수 있으며, 이를 통해 데이터의 이력을 추적하거나 재처리를 할 수 있습니다.
  • 토픽별로 데이터 보존 정책을 설정하여 다양한 요구 사항에 대응할 수 있습니다.

 

카프카는 이러한 특징들을 통해 대규모 데이터 스트리밍을 다루는 다양한 분야에서 활용되고 있습니다.

 

글을 마치며, 다음 글 예고

아파치 카프카는 분산 아키텍처, 확장성, 내결함성 등 다양한 강력한 특징을 지니고 있습니다.

이러한 특성들은 대규모의 데이터를 안정적으로 처리하고 실시간으로 전달하는 데 있어 카프카를 강력한 도구로 만들어주었습니다.

이를 통해 다양한 산업 분야에서 실시간 데이터 처리 및 분석의 핵심 역할을 수행하고 있습니다.

 

다음은 이러한 카프카를 파이썬 언어를 이용하여 사용할 수 있도록 해주는 패키지를 소개하도록 하겠습니다.

 

출처

 
 
 

Putting Apache Kafka To Use: A Practical Guide To Building an Event Streaming Platform (Part 1) | Confluent

Putting Apache Kafka To Use: A Practical Guide to Building an Event Streaming Platform.

www.confluent.io