#kafka

17개의 글이 있습니다.

Kafka Active-Active의 핵심은 Kafka가 아니라 Ownership이다

Kafka 기반 Active-Active DR 아키텍처에서 Kafka가 해결하는 문제와 애플리케이션이 직접 책임져야 하는 Ownership, Outbox, Inbox, 장애 전환 전략을 정리합니다.

kafkaactive-activedisaster-recoverymsaarchitecture

Kafka partition은 괜찮다는데 디스크가 없다

Kafka 4.3의 Partition Size Percentage metrics가 retention 압력을 보여주는 방식과 한계, 그리고 log.dirs 물리 free space 모니터링이 여전히 필요한 이유를 정리합니다.

kafkastoragemonitoringoperationstesting

Kafka Streams 4.2 이후, 장애를 덜 아프게 만드는 두 가지 변화

Kafka Streams 운영에서 자주 만나는 나쁜 레코드와 rebalance 문제를 Kafka 4.2 이후 DLQ 지원과 Streams Rebalance Protocol 관점에서 정리합니다.

kafkakafka-streamsdlqrebalanceoperations

Kafka 브로커 빼기 전에 먼저 Cordon부터

Apache Kafka 4.3에 추가된 cordoned.log.dirs 설정의 의미와 사용법을 정리합니다. 브로커나 log directory를 비우기 전에 새 replica 배치를 먼저 막는 운영 흐름을 다룹니다.

kafkaoperationsstoragedecommissionmaintenance

Kafka 4.0 Consumer Rebalance: 이제 조율은 브로커가 한다

Apache Kafka 4.0에서 GA가 된 새 rebalance protocol을 정리합니다. 기존 protocol과 무엇이 다르고, broker-side assignment와 incremental rebalance가 운영에 어떤 의미를 갖는지 다룹니다.

kafkaconsumerrebalanceoperationsarchitecture

Kafka Streams와 EIP Aggregator: 모으는 것보다 끝내는 것이 어렵다

EIP Aggregator 패턴을 Kafka Streams로 구현할 때 중요한 것은 groupBy와 aggregate가 아니라 correlation key, state store, completion condition, late event 처리입니다.

kafkakafka-streamseiparchitecturestream-processing

Kafka는 왜 Outbox와 Inbox 사이에 잘 맞을까

MSA 비동기 호출에서 Outbox와 Inbox 패턴이 필요한 이유와, Kafka가 이 패턴의 메시지 경로로 잘 맞는 이유를 정리합니다.

kafkamsaarchitecturemessagingreliability

Kafka가 끼어도 Trace는 끊기지 않아야 한다

MSA 흐름 중간에 Kafka가 들어오면 동기 호출처럼 trace가 자연스럽게 이어지지 않습니다. Kafka header로 trace context를 전파하고 producer와 consumer instrumentation을 설계하는 관점을 정리합니다.

kafkatracingopentelemetryobservabilitymsa

Kafka는 메모리가 남아 있는데 왜 OOM이 났을까

Kafka broker의 메모리를 heap과 page cache만으로 보면 놓치기 쉬운 direct buffer를 다룹니다. 시스템 메모리와 heap이 남아 있어도 direct memory 한도 때문에 allocation failure가 날 수 있습니다.

kafkamemoryjvmoperationsperformance

Kafka Client Metrics는 관측의 빈틈을 메울 수 있을까

KIP-714로 도입된 Kafka 클라이언트 원격 메트릭 수집의 구조, 지원 메트릭, 설정 방법, 그리고 운영 현실에서의 한계를 정리합니다.

kafkaobservabilitymonitoringoperations

Kafka가 잘하는 대용량과 보내면 안 되는 대용량

Kafka는 대용량 이벤트 스트림에 강하지만 대용량 파일 전송 채널로 쓰면 시스템 전체의 storage amplification이 커지는 이유를 정리합니다.

kafkastoragearchitectureoperations

Kafka Broker가 느려졌지만 Kafka가 원인은 아니었다

특정 Kafka broker의 throughput 저하와 ISR 이탈을 추적하다가 VM 아래의 네트워크 블록스토리지 경합까지 내려간 경험을 정리합니다.

kafkaoperationsstorageobservability

겉보기엔 균형 잡힌 Kafka, Broker Metrics는 다르게 말한다

Kafka cluster에서 leader partition 수가 균등해도 실제 부하는 다를 수 있습니다. partition별 traffic, network, storage 사용량을 함께 보는 balancing 기준을 정리합니다.

kafkaoperationsload-balancingmonitoring

Kafka의 디스크는 어디로 가고 있나: Object Storage로 옮겨지는 Streaming Storage

WarpStream, AutoMQ, Apache Fluss, Kafka Diskless Topics를 통해 Kafka 생태계가 broker-local disk를 벗어나 object storage를 바라보는 이유와 차이를 정리합니다.

kafkastorageobject-storagearchitecture

Consumer Group만으로는 Queue가 되지 않는다: Kafka Share Group의 의미

Kafka Share Group이 왜 추가되었는지, 기존 Consumer Group과 무엇이 다른지, 어떤 기준으로 적용해야 하는지 정리합니다.

kafkaoperationsconsumerqueue

Consumer Lag은 건강 점수가 아니다: Kafka Consuming Pressure라는 관점

Kafka Consumer Lag을 절대값으로만 판단하지 않고, producer 유입량과 consumer group 처리 능력을 함께 보는 운영 관점을 정리합니다.

kafkaobservabilityoperationsmonitoring

Consumer Group인데 Consumer가 아니다: Kafka 안에서 노드들이 서로를 찾는 법

Kafka Connect와 Schema Registry가 Kafka의 group coordination을 활용해 노드 멤버십, 리더 선출, 작업 분배를 다루는 방식을 정리합니다.

kafkakafka-connectschema-registrycoordination