Kafka

·Kafka
0. 개요한 쇼핑몰에서 새벽배송 주문을 처리하는 시스템이 있습니다.A 고객은 밤 11시에 상품을 주문했고, 결제도 문제없이 완료되었습니다. 그런데 다음 날 아침, 고객센터로는 항의 전화가 걸려옵니다.“결제 내역은 있는데, 주문 내역이 없어요.”조사해보니, 주문 요청을 처리하는 시스템이 메시지 큐를 통해 주문 정보를 하위 서비스로 전달하는 과정에서 메시지가 유실된 것이었습니다. 즉, 결제는 되었지만 주문 정보는 배송 시스템으로 넘어가지 않았습니다.이처럼 데이터 전송의 신뢰성이 보장되지 않으면, 사용자의 신뢰를 잃는 것은 순식간입니다.그렇기 때문에 데이터 전송의 신뢰성을 보장하는 것은 상당히 중요한 작업입니다. 1. 데이터 신뢰성(Data Reliability)이란?데이터 신뢰성이란, 시스템이 데이터를..
·Kafka
1. Kraft 개요저번 편에서 Kafka의 내부 메커니즘과 Kraft(Kafka Raft)의 등장 배경에 대해 간단히 살펴보았습니다.이번 편에서는 실제로 Kraft 모드를 사용해 Kafka를 Docker 환경에서 실행하고, Zookeeper 없이 동작하는 Kafka의 모습을 직접 확인해보며, 설정 방법과 실행 시 주의할 점들을 정리해보겠습니다. 잠깐 Kraft 모드란?Zookeeper 없이 Kafka를 실행할 수 있게 해주는 새로운 아키텍처Kafka 2.8.0부터 프리뷰, Kafka 3.3.0 이상부터 정식 지원장점: 운영 단순화, 안정성 개선 등 2. docker-compose.yml 작성Kafka를 운영할 때 브로커(broker)를 3개 이상 두는 게 일반적이고 권장되므로 3개의 카프카 브로커를 ..
·Kafka
1. kafka 컨트롤러Apache Kafka는 분산 메시징 시스템으로서 강력한 확장성과 내결함성을 제공하지만, 그 구조를 깊이 들여다보면 핵심적인 컴포넌트들이 있습니다. 그중 하나가 바로 Kafka 컨트롤러(controller)입니다. Kafka 컨트롤러는 클러스터 내에서 컨트롤러는 브로커 중 하나가 맡는 역할입니다. 이 컨트롤러는 클러스터의 메타데이터 관리를 책임지며, 파티션 리더를 선출하거나 브로커가 죽었을 때 이를 감지하고 재할당 등의 작업을 수행합니다.메타데이터란? 토픽, 파티션, 브로커, 설정 등의 정보 예를 들어 어떤 브로커가 장애가 나면, 컨트롤러는 이를 감지하고 해당 브로커가 담당하고 있던 파티션의 리더를 다른 브로커로 재선출합니다. 이처럼 Kafka의 핵심 동작 중 많은 부분이 컨트롤러..
·Kafka
0. 개요카프카에서 데이터를 읽는 애플리케이션은 토픽을 구독하고, 해당 토픽에서 메시지를 받기 위해 KafkaConsumer를 사용합니다. 이번 글에서는 카프카 컨슈머에 대해 알아보겠습니다.  1. 카프카 컨슈머(Kafka Consumer)카프카 컨슈머는 토픽을 구독하고 메시지를 읽어와 처리하는 역할을 합니다.하지만, 만약 프로듀서가 메시지를 보내는 속도가 컨슈머의 처리 속도보다 빠르다면 어떻게 될까요?컨슈머가 하나만 있다면 처리 지연이 발생할 수 있습니다. 이를 해결하기 위해 여러 개의 컨슈머를 활용하여 병렬로 데이터를 처리할 수 있어야 합니다. 카프카는 컨슈머 그룹(Consumer Group)을 활용해 여러 개의 컨슈머가 하나의 토픽을 분할하여 처리할 수 있도록 합니다.컨슈머 그룹 구성을 통해 각 컨..
·Kafka
0. 개요카프카를 사용 할 때에는 카프카에 데이터를 쓸 때 사용하는 프로듀서, 읽을 때 사용하는 컨슈머, 혹은 두 가지 기능을 모두 수행하는 애플리케이션을 생성해야합니다. 이번 시간은 프로듀서의 주요 요소와 KafkaProducer와 ProducerRecord 객체를 어떻게 생성 및 전송하는지 정리해보려고 합니다.  1. 프로듀서 (KafkaProducer)프로듀서는 Kafka에 메시지를 쓰는 역할을 담당하는 구성 요소입니다. 메시지를 생성하여 특정 토픽(Topic)으로 전송하며, 이를 통해 다양한 애플리케이션이 데이터를 실시간으로 주고받을 수 있습니다. 이러한 과정은 아래 사진과 같은 주요 단계들을 통해 이뤄지게 됩니다.1. 카프카에서 메시지를 쓰는 작업은 ProducerRecord 객체를 생성함으로 ..
·Kafka
1. Kafka의 기원카프카는 링크드인 내부에서 데이터 파이프라인 문제를 해결하기 위해 개발된 시스템으로 다양한 종류의 데이터를 다루고 고성능 메시지 교환 시스템 역할을 할 수 있도록 설계되었습니다. 그렇다면 데이터 파이프 라인 문제란 무엇일까요? 이를 이해하기 위해서는 먼저 발행/구독(Pub/Sub) 메시징 개념을 알아볼 필요가 있습니다.Pub/Sub 메시징 패턴에서는 전송자(메시지 발행)가 데이터를 특정 수신자(구독하는 쪽)에게 직접 보내는 것이 아니라, 브로커를 통해 분류된 메시지를 전송하고, 수신자는 자신이 필요한 메시지를 구독하는 방식으로 데이터를 전달받습니다. 이때 브로커는 메시지를 중개하며, 데이터의 흐름을 효과적으로 관리하는 역할을 합니다. 그렇다면 왜 브로커가 필요하고 데이터 파이프 라인..