Community

Kafka

Kafka는 대규모 실시간 데이터 스트림 처리와 분산 메시지 전달을 위한 오픈소스 플랫폼입니다.

Kafka란?

Kafka는 실시간 데이터 처리를 위한 강력한 메시징 시스템입니다. 다양한 데이터 소스에서 발생하는 데이터를 효율적으로 수집, 저장, 처리 및 분석할 수 있습니다. 분산 아키텍처를 기반으로 하며, 대규모 데이터 처리와 높은 확장성을 자랑합니다.

Kafka는 Apache License 2.0에 따라 배포되는 오픈소스 소프트웨어입니다.

Tekton Pipelines

Kafka 구성 요소

Producer

  • 메시지를 생성하고 Kafka 클러스터에 전송하는 클라이언트.

Consumer

  • Kafka에서 데이터를 읽고 사용하는 클라이언트.

Broker

  • 데이터를 저장하고 Producer와 Consumer 간 데이터를 중재하는 서버.

Topic

  • 메시지가 저장되는 논리적 채널. Producer와 Consumer는 Topic으로 통신.

Partition

  • Topic이 나누어 저장되는 단위로, 병렬 처리를 지원.

Zookeeper

  • 클러스터의 메타데이터를 관리하고 노드의 상태를 모니터링.

Kafka 블로그

더보기 »

Kafka 리소스

더보기 »

Kafka 쉽게 이해하기

Kafka는 대규모 데이터를 실시간으로 전달하고 처리할 수 있는 “데이터 우체국” 같은 도구입니다.

  • 여러 장소에서 발생한 데이터를 “우편물”처럼 보내고, 필요로 하는 곳에서 실시간으로 받아볼 수 있도록 도와줍니다.
  • 데이터의 “택배기사”처럼 안정적으로 메시지를 목적지까지 빠르게 전달하고, 데이터를 잃어버리지 않도록 안전하게 관리합니다.

결론적으로, Kafka는 기업이 데이터를 실시간으로 주고받고 활용하는 데 최적화된 플랫폼이라고 생각하면 됩니다!

Kafka 시작과 배경

Kafka는 LinkedIn에서 대규모 데이터 처리를 위한 실시간 메시징 솔루션으로 탄생했으며, 기존 메시징 시스템의 한계를 극복하고 확장 가능하고 신뢰성 높은 데이터 플랫폼을 구축하기 위해 개발되었습니다. 현재는 다양한 기업에서 데이터 스트리밍, 로깅, 분석의 핵심 도구로 사용되고 있습니다.

Kafka 시작

Kafka 배경

Kafka 주요 특징

Kafka는 높은 성능, 확장성, 내구성 등 다양한 이점을 제공하는 데이터 스트리밍 플랫폼입니다. 실시간 데이터와 배치 데이터 처리 모두를 지원하여 다양한 데이터 처리 요구를 충족시킵니다.

특징 설명 이점
높은 처리 성능 초당 수백만 개의 메시지를 처리할 수 있는 고성능 아키텍처 대규모 데이터 스트림 처리 가능
확장성 클러스터에 노드를 추가하여 처리 용량을 쉽게 확장 가능 유연한 확장으로 변화하는 데이터 수요 대응
내구성 데이터를 디스크에 복제하여 안정적으로 저장 데이터 손실 최소화 및 안정적인 데이터 관리
분산 아키텍처 Producer, Consumer, Broker로 구성된 분산 시스템 높은 가용성과 확장성 제공
Topic 기반 메시징 메시지를 Topic으로 분류하여 관리 데이터를 논리적으로 분리하고 효율적으로 관리 가능
Real-time 처리 실시간 데이터 스트림 처리 및 전달 지원 빠른 데이터 분석 및 의사 결정 가능
Batch 처리 지원 실시간 처리 외에 배치 처리도 지원 다양한 데이터 처리 시나리오에 적합
다양한 언어 지원 Java, Python, Go 등 다양한 언어 클라이언트 라이브러리 제공 다양한 개발 환경과의 호환성
오픈소스 Apache Software Foundation에서 관리하는 오픈소스 프로젝트 비용 절감 및 커뮤니티 지원 활용
유연한 데이터 모델 다양한 형식의 데이터를 처리할 수 있는 구조 데이터 소비자와 생산자의 유연성 제공
컨슈머 그룹 지원 Consumer 간의 데이터 병렬 처리 가능 작업 부하를 효율적으로 분산 처리

Kafka 경쟁 제품

Kafka는 대규모 데이터 스트리밍과 분산 처리에 최적화된 플랫폼으로, 경쟁 제품들과 비교해 높은 처리 성능과 확장성을 자랑합니다. 그러나 특정 사용 사례에서는 RabbitMQ, Amazon Kinesis, Google Pub/Sub와 같은 도구가 더 적합할 수 있습니다. 프로젝트의 요구사항에 따라 성능, 확장성, 비용 효율성을 고려해 적합한 솔루션을 선택해야 합니다.

제품명 주요 기능 장점 단점 주요 사용 사례
RabbitMQ 메시지 큐 기반 메시징 시스템 간단한 설정 및 운영 대규모 확장에 한계 금융 및 결제 시스템
ActiveMQ 다목적 메시징 플랫폼 다양한 메시징 프로토콜 지원 높은 학습 곡선 엔터프라이즈 애플리케이션
Apache Pulsar 분산 메시징 및 데이터 스트림 처리 높은 확장성 및 멀티테넌시 지원 복잡한 운영 클라우드 서비스
Amazon Kinesis AWS 기반 실시간 데이터 스트림 플랫폼 AWS 생태계와의 완벽한 통합 AWS에 종속적 클라우드 데이터 파이프라인
Google Pub/Sub 메시징 및 스트리밍 데이터 처리 플랫폼 Google Cloud 서비스와의 통합 구글 생태계에 종속 실시간 분석 및 IoT 데이터 처리
Redpanda Kafka API와 호환되는 고성능 데이터 스트리밍 플랫폼 낮은 지연 시간, Zookeeper 불필요 기능이 Kafka에 비해 제한적, 커뮤니티 지원 부족 실시간 데이터 처리, 대규모 로그 관리
NATS Streaming 경량 메시징 시스템, 고성능 메시지 전달 경량화된 설계로 빠른 처리 속도 제공 대규모 데이터 스트림 처리에는 적합하지 않음 IoT 장치 데이터 처리, 실시간 알림
Apache Flink 스트리밍 데이터와 배치 데이터 처리를 위한 분산 처리 시스템 복잡한 데이터 변환 및 분석에 적합, 상태 관리 지원 순수 메시징 시스템으로는 적합하지 않음 실시간 데이터 분석 및 머신러닝 파이프라인 구축
Confluent Platform Kafka를 기반으로 한 데이터 플랫폼, 엔터프라이즈급 확장성 제공 Kafka와 완벽 호환, 추가적인 관리 및 보안 기능 포함 상용 제품으로 높은 비용 발생 금융 서비스, 실시간 데이터 분석

Kafka 레퍼런스

카카오

쿠팡

네이버

LinkedIn

Uber

Netflix