이벤트 계약

Kafka 토픽 계약

user_created 이벤트를 발행하기 전에 토픽 이름, 파티션 키, 컨슈머 그룹, 재처리 방식을 함께 정해야 비동기 흐름을 운영할 수 있습니다.

event

사실을 과거형으로 남긴다

사용자 생성 명령이 아니라 생성이 끝난 사실을 발행해야 소비자가 독립적으로 반응합니다.

partition

순서가 필요한 키 선택

같은 사용자 이벤트의 순서가 중요하면 user id를 키로 두어 같은 파티션으로 보냅니다.

group

소비자 확장 단위 결정

같은 그룹의 Notifications 인스턴스는 파티션을 나눠 처리하고, 다른 그룹은 독립적으로 읽습니다.

idempotent같은 이벤트가 두 번 와도 환영 메일이 중복 발송되지 않게 합니다.
offset처리 성공 후 커밋해야 장애 뒤 재시작 시 누락을 줄일 수 있습니다.
retry일시 실패는 재시도하고, 계속 실패하면 별도 토픽이나 로그로 격리합니다.
replay영속 로그를 다시 읽을 때 부작용과 처리 기준을 미리 정합니다.