Kafka란 무엇입니까?

Apache Kafka는 실시간으로 스트리밍 데이터를 수집하고 처리하는 데 최적화된 분산 데이터 스토어입니다. 스트리밍 데이터는 수천 개의 데이터 원본에서 연속적으로 생성되는 데이터로, 보통 데이터 레코드를 동시에 전송합니다. 스트리밍 플랫폼은 이러한 지속적인 데이터 유입을 처리하고 데이터를 순차적이고 점진적으로 처리해야 합니다.

Kafka는 사용자에게 세 가지 주요 기능을 제공합니다.

  • 레코드 스트림 게시 및 구독
  • 레코드가 생성된 순서대로 레코드 스트림을 효과적으로 저장
  • 레코드 스트림을 실시간 처리

Kafka는 데이터 스트림에 적응하는 실시간 스트리밍 데이터 파이프라인과 애플리케이션을 구축하는 데 주로 사용됩니다. 메시징, 스토리지, 스트림 처리를 결합해 과거 및 실시간 데이터 모두의 저장 및 분석을 허용합니다. 

Kafka는 어디에 사용되나요?

Kafka는 실시간 스트리밍 데이터 파이프라인과 실시간 스트리밍 애플리케이션을 구축하는 데 사용됩니다. 데이터 파이프라인은 데이터를 안정적으로 처리하고 한 시스템에서 다른 시스템으로 이동하며, 스트리밍 애플리케이션은 데이터 스트림을 소비하는 애플리케이션입니다. 예를 들어 사용자 활동 데이터를 받아 사람들이 웹사이트를 어떻게 사용하는지 실시간으로 추적하는 데이터 파이프라인을 만들려면 Kafka를 사용하여 스트리밍 데이터를 수집 및 저장하면서 데이터 파이프라인을 구동하는 애플리케이션에 읽기 서비스를 제공할 수 있습니다. Kafka는 두 애플리케이션 간의 통신을 처리하고 중재하는 플랫폼인 메시지 브로커 솔루션으로도 자주 사용됩니다.

Kafka는 어떻게 작동하나요?

Kafka는 대기열과 게시-구독이라는 두 가지 메시징 모델을 결합하여 소비자에게 각 모델의 주요 이점을 제공합니다. 대기열을 사용하면 데이터 처리를 여러 소비자 인스턴스에 분산할 수 있어 확장성이 뛰어납니다. 하지만 기존 대기열은 다중 구독자가 아닙니다. 게시-구독 접근 방식은 다중 구독자이지만 모든 메시지가 모든 구독자에게 전송되므로 여러 작업자 프로세스에 작업을 분산하는 데 사용할 수 없습니다. Kafka는 파티셔닝된 로그 모델을 사용하여 이러한 두 개의 솔루션을 통합합니다. 로그는 순서가 지정된 레코드 시퀀스이며 이러한 로그는 여러 구독자에 해당하는 세그먼트 또는 파티션으로 나뉩니다. 즉, 동일한 주제에 여러 구독자가 있을 수 있고 각 구독자에게 파티션을 할당하여 확장성을 높일 수 있습니다. 마지막으로 Kafka의 모델은 재생 기능을 제공하므로 데이터 스트림을 읽는 여러 독립 애플리케이션이 자체 속도에 따라 독립적으로 작동할 수 있습니다.

대기열

게시-구독

Kafka의 접근 방식이 주는 이점은 무엇인가요?

확장성

Kafka의 파티셔닝된 로그 모델을 사용하면 데이터를 여러 서버에 분산할 수 있으므로 단일 서버에 담을 수 있는 수준 이상으로 데이터를 확장할 수 있습니다. 

신속함

Kafka는 데이터 스트림을 분리하므로 지연 시간이 매우 짧아 속도가 극도로 빠릅니다. 

내구성

파티션은 여러 서버에 분산되어 복제되며 데이터는 모두 디스크에 기록됩니다. 이렇게 하면 서버 장애로부터 데이터를 보호할 수 있어 데이터의 내결함성과 내구성을 높일 수 있습니다. 

Kafka의 아키텍처는 다양한 모델을 어떻게 통합합니까?

Kafka는 서로 다른 주제에 대한 레코드를 게시하여 두 가지 모델을 개선합니다. 각 주제에는 모든 레코드를 순서대로 추적하고 실시간으로 새 레코드를 추가하는 구조화된 커밋 로그로 작동하는 파티셔닝된 로그가 있습니다. 이러한 파티션은 여러 서버에 분산 및 복제되므로 높은 확장성, 내결함성 및 병렬 처리가 가능합니다. 각 소비자에게 주제의 파티션이 할당되므로 데이터 순서를 유지하면서 여러 구독자를 사용할 수 있습니다. Kafka는 이러한 메시징 모델을 결합하여 두 가지 이점을 모두 제공합니다. 또한 Kafka는 모든 데이터를 디스크에 기록하고 복제함으로써 확장성과 내결함성이 뛰어난 스토리지 시스템 역할을 합니다. 기본적으로 Kafka는 공간이 부족해질 때까지 데이터를 디스크에 저장하지만 사용자가 보존 한도를 설정할 수도 있습니다. Kafka에는 다음과 같은 네 가지 API가 있습니다.

  • 생산자 API: Kafka 주제에 레코드 스트림을 게시하는 데 사용됩니다.
  • 소비자 API: 주제를 구독하고 해당 레코드 스트림을 처리하는 데 사용됩니다.
  • 스트림 API: 애플리케이션이 주제에서 입력 스트림을 받아 다른 출력 주제로 이동하는 출력 스트림으로 변환하는 스트림 생산자처럼 동작할 수 있습니다.
  • 커넥터 API: 사용자가 현재 Kafka 주제에 다른 애플리케이션 또는 데이터 시스템을 추가하는 작업을 원활하게 자동화할 수 있습니다.

Apache Kafka 와 RabbitMQ의 차이점은 무엇인가요?

RabbitMQ는 메시징 큐 방식을 사용하는 오픈 소스 메시지 브로커입니다. 대기열은 노드 클러스터에 분산되어 있으며 선택적으로 복제되며 각 메시지는 단일 소비자에게만 전달됩니다.

특징

Apache Kafka

RabbitMQ

아키텍처

Kafka는 메시징 큐와 게시 구독 접근 방식을 결합하는 분할된 로그 모델을 사용합니다.

RabbitMQ는 메시징 큐를 사용합니다.

확장성

Kafka는 여러 서버에 파티션을 분산할 수 있도록 지원함으로써 확장성을 제공합니다.

대기열에 있는 소비자 수를 늘려 경쟁 소비자 전체로 처리를 확장합니다.

메시지 보존

예를 들어 정책에 기반한 경우, 메시지를 하루 동안 저장할 수 있습니다. 사용자는 이러한 보존 기간을 구성할 수 있습니다.

승인에 기반한 경우, 메시지가 소비되면 삭제됩니다.

다수의 소비자

Kafka에서는 일정 기간 동안 동일한 메시지를 재생할 수 있으므로 여러 소비자가 동일한 주제를 구독할 수 있습니다.

메시지는 소비될 때 제거되므로 여러 소비자가 모두 동일한 메시지를 받을 수는 없습니다.

복제

주제는 자동으로 복제되지만 사용자가 주제를 복제하지 않도록 수동으로 구성할 수 있습니다.

메시지는 자동으로 복제되지 않지만 사용자가 메시지를 복제하도록 수동으로 구성할 수 있습니다.

메시지 정렬

각 소비자는 분할된 로그 아키텍처로 인해 정보를 순서대로 수신합니다.

메시지는 대기열에 도착한 순서대로 소비자에게 전달됩니다. 경쟁 소비자가 있는 경우, 각 소비자는 해당 메시지의 일부를 처리합니다.

프로토콜

Kafka는 TCP를 통한 바이너리 프로토콜을 사용합니다.

플러그인을 통해 지원되는 고급 메시징 큐 프로토콜(AMQP): MQTT, STOMP.

Kafka와 RabbitMQ의 차이점에 대해 자세히 알아보기»

AWS는 Kafka 요구 사항을 어떻게 지원하나요?

AWS에서 Kafka를 수동으로 배포하는 방법에 대한 자세한 내용은 여기를 참조하세요.

또한 AWS는 Apache Kafka를 위한 가장 호환성이 뛰어나고 가용성이 뛰어나며 안전한 완전 관리형 서비스인 Amazon MSK를 제공합니다. 이를 통해 고객은 데이터 레이크를 채우고, 데이터베이스 간에 변경 사항을 스트리밍하고, 기계 학습 및 분석 애플리케이션을 지원할 수 있습니다. Amazon MSK를 사용하면 고객은 인프라 관리 시간을 줄이고, 더 많은 시간을 애플리케이션 개발에 활용할 수 있습니다. Amazon MSK에 대해 자세히 알아보기.

AWS의 다음 단계

무료 계정 가입

AWS 프리 티어에 즉시 액세스할 수 있습니다.

가입 
콘솔에서 구축 시작

AWS Management Console에서 구축을 시작하세요.

로그인