Kafka 이벤트는 실패해도 같은 결과로 수렴해야 한다

브로커에 이벤트가 남아 있기 때문에 소비자는 다시 읽을 수 있습니다. 그래서 재시도, 중복 처리, DLQ 규칙을 함께 정해야 합니다.

1. Read이벤트 소비

consumer가 `user_created` offset을 읽습니다.

2. Handle업무 처리

환영 메일 발송처럼 외부 작업을 수행합니다.

3. Retry일시 실패 재시도

네트워크 오류는 지연 후 다시 처리합니다.

4. DLQ계속 실패한 이벤트 격리

형식 오류나 영구 실패는 별도 토픽으로 보냅니다.

Idempotency

같은 이벤트가 두 번 와도 결과가 한 번 처리된 것과 같아야 합니다.

Offset commit

업무 처리가 끝난 뒤 읽은 위치를 확정해야 손실을 줄입니다.

DLQ review

죽은 편지 토픽은 알림과 재처리 도구가 함께 있어야 합니다.

운영 기준: Kafka는 메시지를 오래 보관해주지만, 실패한 이벤트를 어떻게 다시 처리할지는 애플리케이션 계약으로 정해야 합니다.