현수의 제 2의 뇌
article thumbnail
반응형

Apache Kafka

Apache Kafka는 분산 이벤트 스트리밍 플래솜으로 많은 양의 데이터를 실시간으로 처리하고, 저장하고, 분석할 수 있도록 설계되었습니다.

 

Kafka는 LinkedIn에서 개발되어 2011년에 오픈 소스로 공개되었고, 이후로 많은 기업이 데이터 파이프라인을 구축하는데 널리 사용되었습니다.

 

데이터 파이프라인이란..?
데이터를 한 위치에서 다른 위치로 이동시키는 과정을 의미한다.
이 과정은 데이터 수집, 변환, 로딩하는 일련의 단계를 포함할 수 있으며 이러한 단계는 종종 ETL( Extract, Transform, Load)라는 용어로 부릅니다.

 

Kafka의 주요 기능

Subscribe/Publish 메시징 모델

프로듀서는 메시지를 생성하여 토픽에 발행(Publish)하고 컨슈머는 토픽을 구독(Subscribe)하여 메시지를 수신합니다. 이러한 모델은 유연하며 확장성이 뛰어나고 이러 시스템은 분산 시스템에서 데이터를 신속하게 처리할 수 있도록 합니다.

용어를 하나도 모르겠잖아..?

프로듀서(Producer) : Kafka 시스템에서 메시지를 생성하고 Kafka에 보내는 역할을 하는 요소입니다. 데이터를 생성하는 주체입니다. 

메시지(Message) : 메시지는 Kafka가 전송하는 데이터 단위입니다. 메시지는 간단한 문자열부터 복잡한 데이터 구조를 가질 수 있으며 메시지는 보통 Key-Value 로 구성됩니다. 이를 통해 메시지를 필터링하거나 정렬하는 등 작업을 수행합니다.

토픽(Topic) : 토픽은 Kafka에서 메시지들을 관리하는 논리적 구조입니다. 프로듀서는 메시지를 토픽에 발행(publish)하고 컨슈머는 토픽을 구독(subscirbe) 하여 메시지를 받습니다. 예를 들어 사용자 로그 데이터는 'user_logs'라는 토픽에, 센서 데이터는 'sensor_data'라는 토픽에 각각 발행되어 사용될 수 있습니다.

컨슈머(Consumer) : 컨슈머는 특정 토픽에 대한 메시지를 받아 처리하는 역할을 하는 구성 요소입니다. 컨슈머는 메시지를 받아서 필요한 작업을 수행하며, 예를 들면 메시지를 데이터베이스에 저장하거나 다른 시스템에 전달하거나, 분석 작업을 수행하는 등의 작업을 합니다.

스케일 아웃 (Scale out)

Kafka는 클러스터에 데이터를 분산 저장하므로 처리 용량을 쉽게 확장할 수 있습니다. 이를 통해 큰 규모의 실시간 데이터를 처리할 수 있습니다.

 

클러스터란?

일반적으로 클러스터는 여러 컴퓨터나 서버가 네트워크를 통해 연결되어 하나의 시스템처럼 동작하는 컴퓨팅 구조를 의미합니다.

Kafka의 클러스터도 비슷한 개념입니다. 

Kafka에서의 클러스터도 Kafka 클러스터 내에서 서버를 가리키는 "브로커"로 Kafka가 구성되고 각 브로커는 메시지를 저장하고 전달하는 역할을 수행합니다. 클러스터를 통해 여러 브로커에 분산 저장함으로써 시스템의 처리 용량을 확장(scale-out)하는 데 필요한 메커니즘을 제공합니다.

 

장애 복구

또한 kafka는 데이터를 복제하여 클러스터의 여러 브로커에 저장함으로써 시스템 장애를 대비합니다.

 

영속성

Kafka는 디스크에 데이터를 저장하고, 필요에 따라 메시지를 재사용할 수 있도록합니다. 

이러한 영속성 메커니즘은 데이터 손실을 방지하고, 데이터의 영속성을 보장합니다.

 

실시간 처리

Kafka는 메시지를 실시간으로 처리하므로, 데이터 분석, 모니터링, 실시간 서비스 등 다양한 실시간 어플리케이션에 적합합니다.

profile

현수의 제 2의 뇌

@부현수

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!