Post

Offset Commit

Offset Commit 주제의 핵심 개념과 적용 포인트를 정리합니다.

Offset Commit

Offset Commit이란

Consumer는 메시지를 읽기만 해서는 상태가 보존되지 않는다.
“여기까지 처리 완료”라는 체크포인트를 Kafka에 기록해야 재시작 이후에도 이어서 처리할 수 있다.

이 체크포인트 기록이 offset commit이다.
Kafka는 내부 토픽(__consumer_offsets)에 그룹/파티션별 커밋 상태를 관리한다.

커밋 위치 이해하기

일반적으로 커밋되는 값은 “마지막으로 처리한 오프셋”이 아니라 다음에 읽을 오프셋이다.
예를 들어 오프셋 100까지 처리했다면 101을 커밋하는 식이다.

이 차이를 이해해야 중복/유실 분석 시 혼동을 줄일 수 있다.

커밋 전략과 트레이드오프

  • 너무 자주 커밋하면 오버헤드가 늘어난다.
  • 너무 늦게 커밋하면 장애 시 재처리 범위가 커진다.

즉 커밋 전략은 “성능”과 “복구 시 중복 범위” 사이 균형 문제다.
배치 크기, 처리 시간, 장애 허용 수준을 기준으로 정책을 정하는 게 현실적이다.

실무 체크 포인트

  • 처리 완료 전에 커밋하면 유실 가능성이 생긴다.
  • 처리 완료 후 커밋하면 중복 가능성은 남지만 유실 위험은 낮출 수 있다.
  • 다운스트림(DB/API) 멱등성이 약하면 커밋 정책을 더 보수적으로 잡아야 한다.
This post is licensed under CC BY 4.0 by the author.