Kafka EDA

Kafka는 직접 호출을 이벤트 로그로 바꾼다

동기 호출은 응답을 기다리지만 Kafka 이벤트는 producer가 topic에 기록하고 consumer가 자기 속도로 처리한다. 결합은 줄지만 순서, 중복, 재처리 책임이 새로 생긴다.

사용자 생성 이벤트의 책임 흐름

1. HTTP

Users API

사용자 생성 요청을 처리하고 도메인 상태를 먼저 확정한다.

2. Producer

event 발행

user_created payload를 Kafka client로 topic에 기록한다.

3. Topic

분산 로그

이벤트는 broker에 보존되고 partition key로 순서 범위가 정해진다.

4. Consumer

그룹 처리

Notifications 서비스가 consumer group 안에서 partition을 나눠 읽는다.

5. Effect

후속 작업

환영 이메일처럼 응답과 분리 가능한 작업을 비동기로 실행한다.

동기 호출과 이벤트 기반 처리 비교

결합
동기 호출

호출자가 대상 서비스 주소와 응답 시간을 직접 의식한다.

Kafka 이벤트

생산자는 topic에 기록하고 소비자는 독립적으로 처리한다.

장애
동기 호출

하위 서비스 지연이 사용자 요청 지연으로 바로 전파된다.

Kafka 이벤트

소비자가 잠시 멈춰도 이벤트는 보존되고 나중에 따라잡을 수 있다.

운영 책임
동기 호출

timeout, retry, status mapping이 핵심이다.

Kafka 이벤트

offset, lag, 중복 처리, DLQ, replay 기준이 핵심이다.