Apache Kafka 이론 - 프로듀서 확인 & 토픽 내구성

이건·2025년 4월 30일
0

Kafka

목록 보기
8/18

프로듀서의 데이터 쓰기 확인(acks)란?

Kafka 프로듀서는 브로커에 데이터를 전송할 때, 해당 데이터가 성공적으로 저장되었는지 확인(acknowledgment)을 받을 수 있다. 이 확인 방식은 acks 옵션으로 제어하며, 데이터 유실 가능성과 시스템의 신뢰성, 성능에 직접적인 영향을 준다.


acks 옵션의 세 가지 설정

1. acks = 0

  • 동작: 프로듀서는 브로커의 응답을 기다리지 않고, 메시지를 전송하자마자 성공으로 간주한다.
  • 결과: 브로커가 다운되거나 네트워크 장애가 발생해도 데이터 유실을 감지하지 못한다.
  • 특징: 가장 빠르지만, 데이터 유실 위험이 가장 크다.

2. acks = 1

  • 동작: 프로듀서는 파티션의 리더 브로커가 메시지를 성공적으로 기록했다는 응답만 기다린다.
  • 결과: 리더 브로커가 데이터를 받은 직후 장애가 발생하면, 팔로워(레플리카)에 복제되기 전에 데이터가 유실될 수 있다.
  • 특징: 속도와 신뢰성의 균형. 데이터 유실 가능성은 acks=0보다 낮지만, 완전히 안전하진 않다.

3. acks = all

  • 동작: 프로듀서는 리더뿐만 아니라 모든 ISR(In-Sync Replica, 동기화된 레플리카)이 메시지를 기록했다는 응답을 모두 받을 때까지 대기한다.
  • 결과: 어떤 상황에서도 데이터가 유실되지 않음을 보장한다.
  • 특징: 가장 강력한 내구성. 처리 속도는 느려질 수 있지만, 데이터 신뢰성이 극대화된다.

복제 계수와 내구성의 관계

Kafka 토픽의 복제 계수(Replication Factor)는 데이터 내구성의 또 다른 핵심 요소다.

  • 복제 계수 N을 선택하면, 클러스터 내에서 최대 N-1개의 브로커가 장애가 나도 데이터가 안전하게 보관된다.
  • 예를 들어 복제 계수 3이면, 2대의 브로커가 장애가 나도 데이터 사본이 남아 있어 서비스가 지속된다.
  • 복제 계수 2, 브로커 3개인 상황에서 브로커 102를 잃어도, 나머지 브로커에 데이터가 남아 있어 데이터 손실이 없다.


Kafka의 내구성: 신뢰성 있는 데이터 플랫폼의 핵심

Kafka의 가장 큰 특징 중 하나는, 복제 계수와 acks 옵션을 적절히 조합하면 데이터의 내구성과 신뢰성을 원하는 수준으로 조정할 수 있다는 점이다.

  • 복제 계수 N: 최대 N-1개 브로커 장애에도 데이터 보존
  • acks=all: 모든 동기화 레플리카가 데이터를 받아야 성공 응답, 데이터 유실 방지

마무리

Kafka의 acks 옵션과 복제 계수는 데이터 신뢰성과 내구성을 결정하는 핵심 설정이다.
프로덕션 환경에서는 복제 계수 2~3, acks=all 조합이 가장 안전하게 널리 사용된다.
이렇게 하면 장애 상황에서도 데이터 손실 없이 안정적인 서비스 운영이 가능하다.

0개의 댓글