사용자 생성은 HTTP 응답과 Kafka 이벤트를 분리해서 처리한다

Users Service는 사용자를 저장한 뒤 즉시 HTTP 응답을 돌려주고, 알림 처리는 Kafka 이벤트를 구독한 서비스가 따로 수행합니다.

Producer

UsersController

client.emit('user_created', user)

사용자 생성 사실을 토픽으로 발행합니다.

Kafka

topic: user_created

brokers: ['localhost:9092']

브로커가 이벤트를 저장하고 consumer group에 전달합니다.

Consumer

NotificationsController

@EventPattern('user_created')

이벤트를 받아 환영 이메일을 보냅니다.

HTTP 책임

사용자 생성 성공 여부는 Users Service가 바로 응답합니다.

이벤트 책임

알림 전송은 Kafka 이벤트 처리 성공 여부로 따로 관측합니다.

연결 책임

`clientId`, `brokers`, `groupId`가 서비스별로 구분되어야 합니다.

핵심: Kafka 구현의 중심은 `emit()`과 `@EventPattern()`이 같은 topic 계약을 공유한다는 점입니다.