개발

[카프카 핵심 가이드] Ch 07, Ch 08

오렌지색 귤 2025. 8. 17. 19:29
반응형

Q. 카프카에서 발생할 수 있는 대표적인 에러 유형은?

 

Producer

TimeoutException 브로커 응답 지연 (네트워크, 리더 불안정)
RecordTooLargeException 메시지 크기가 max.request.size 초과
NotEnoughReplicasException ISR 부족 → acks=all 충족 불가
KafkaStorageException 브로커 디스크 장애 (ISR 탈락 등 발생 가능)

 

 

Consumer

RebalanceInProgressException Rebalance 중 poll 호출
WakeupException 안전한 종료 처리 도중 발생
OffsetOutOfRangeException 커밋된 offset이 사라진 경우 (retention.ms 초과)
CommitFailedException group 재할당 중 커밋 시도 등 비정상 상황

 

 

클러스터/운영

브로커 장애 (Crash) 리더 재선출, ISR 이동, 컨트롤러 재할당 발생
ZK/KRaft delay 메타데이터 지연 → Metadata fetch 문제
네트워크 분리 Leader → Follower 복제 실패, 클라이언트 지연/실패

 

 

 

Q. 위 에러들을 테스트할 수 있는 라이브러리/도구

 

① Testcontainers + Embedded Kafka

  • Kafka를 Docker 컨테이너로 테스트용 클러스터로 쉽게 구동
  • Spring Kafka, Kafka Java Client와 JVM 내에서 통합 테스트 가능
  • 일부 장애 상황을 유도할 수 있음 (브로커 중지, 네트워크 끊김 등)

 

예:

  • 브로커 1개 중단 (kafkaContainer.stop())
  • 특정 토픽에 메시지 크기 초과 메시지 전송
  • Rebalance 유도 → onPartitionsRevoked() 확인

 

② Toxiproxy

  • Kafka 브로커 ↔ 클라이언트 사이의 네트워크에 의도적으로 지연, 끊김, 제한을 주는 프록시
  • TimeoutException, NetworkException, leader unavailable 등을 유도 가능

 

③ Spring Kafka Test + @EmbeddedKafka

  • JVM 내 임베디드 Kafka 클러스터 구동
  • 특정 상황 (e.g., offset 유실, 재시작) 등을 코드 내에서 테스트 가능
  • KafkaTestUtils, EmbeddedKafkaBroker 사용

 

④ Chaos Engineering 툴 (실전 환경)

Gremlin, Chaos Mesh, LitmusChaos 실환경에서 Kafka 브로커/네트워크에 장애 유도
kcat, kafka-producer-perf-test.sh 메시지 전송 상태, 실패율 테스트
JMeter + Kafka plugin 부하 기반 테스트 시나리오 작성 가능

 

 

Q. 테스트 케이스는?

브로커 다운 중 producer 전송 → 예외 핸들링 TimeoutException, NotLeaderForPartitionException
offset 커밋 실패 + 재시도 CommitFailedException, 재poll 동작
리밸런싱 도중 메시지 재처리 여부 onPartitionsRevoked(), ack.acknowledge() 누락 시
최대 메시지 크기 초과 RecordTooLargeException, compression.type 등과 연계
DLQ 정상 전송 여부 ErrorHandler 설정 + 메시지 확인
반응형