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

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 모듈에 넣고 여러 곳에서 빼서 사용한답니다.