Skip to main content Link Menu Expand (external link) Document Search Copy Copied

created at 2023-04-24

Kafka Topic Naming Convention

저는 현재 사용중인 Kafka MQ 에서 토픽을 어떻게 구성할지 고민하고 있습니다.

하나를 예로 들어볼께요. 저는 유저가 신규 주문 시 productService 와 customerService 에게 이벤트를 전달하고 수신받는 토픽을 구성하려고 합니다. 이 토픽은 Naming 에 따라 전체 아키텍처 구성방식이 달라집니다. 그래서 먼저 이를 정하고 이에 맞추어 아키텍처를 구성해주는것이 좋죠. 저는 아래와 같이 3가지의 Naming 규칙에 따라서 아키텍처를 구성해보았습니다.

img

이 중 1,2 번 토픽 네이밍은 기각하였습니다. 이유는 보시다시피 토픽만으로 어떤 기능을 수행하고 어디에서 발행하는지 확인하기 어렵기 때문입니다.

결론적으로 3번 {application}-{dataType}-{eventType} 네이밍 규칙을 사용하려고 합니다. 이런 규칙은 다음의 이점을 가지고 있기 때문이죠. 1) 이벤트 발행 어플리케이션을 알기 쉽다. 2) 어떤 기능을 수행하는지 명확하다. 3) 요청과 응답의 타입을 확인할 수 있다.

이러한 토픽들의 이름들을 쉽게 변경하기 위해서 모듈화 시키는 것이 좋겠죠? 그래서 저는 static final String 으로 토픽 이름들을 common-dto 모듈에 넣고 여러 곳에서 빼서 사용한답니다.